Skip to content

How to handle removed entity field? #723

Closed
@chengchen

Description

@chengchen

Hello,

I am sorry if this question is already asked, and I did search before asking, the most relevant one I found is: #511

We are using javers to do audits in our company, and we are satisfied with it's simplicity. However, we had an issue recently regarding a simple removal of a field in an Hibernate entity. And this field itself is an entity as well. So to simplify a bit: Product entity had a field called Category, but Category has been removed completely from db as well as from the code. If I don't do any change in the javers tables, it will break simply with the exception:

org.javers.common.exception.JaversException: TYPE_NAME_NOT_FOUND: type name 'com.edgelab.marketdata.domain.Issuer' not found. If you are using @TypeName annotation, remember to register this class using JaversBuilder.withPackagesToScan(String) or JaversBuilder.scanTypeName(Class)
	at org.javers.core.metamodel.type.TypeMapperState.getClassByDuckType(TypeMapperState.java:70) ~[javers-core-3.11.5.jar:na]
	at org.javers.core.metamodel.type.TypeMapperState.getClassByTypeName(TypeMapperState.java:42) ~[javers-core-3.11.5.jar:na]
	at org.javers.core.metamodel.type.TypeMapper.getJaversManagedType(TypeMapper.java:168) ~[javers-core-3.11.5.jar:na]
	at org.javers.core.json.typeadapter.commit.GlobalIdTypeAdapter.parseEntity(GlobalIdTypeAdapter.java:117) ~[javers-core-3.11.5.jar:na]
	at org.javers.core.json.typeadapter.commit.GlobalIdTypeAdapter.parseInstanceId(GlobalIdTypeAdapter.java:59) ~[javers-core-3.11.5.jar:na]
	at org.javers.core.json.typeadapter.commit.GlobalIdTypeAdapter.fromJson(GlobalIdTypeAdapter.java:36) ~[javers-core-3.11.5.jar:na]
	at org.javers.core.json.typeadapter.commit.GlobalIdTypeAdapter.fromJson(GlobalIdTypeAdapter.java:15) ~[javers-core-3.11.5.jar:na]
	at org.javers.core.json.JsonConverterBuilder.lambda$registerJsonTypeAdapterForType$4(JsonConverterBuilder.java:168) ~[javers-core-3.11.5.jar:na]
....

I am wondering how should we proceed in this case without cleaning up massive amount of json snapshots? I also quickly browsed in the javers source code, I could not find a place to configure ignoring removed fields..

Could you help us with some hints? Or do you need some examples to reproduce?
Many thanks!

Chengchen

Metadata

Metadata

Assignees

No one assigned

    Labels

    Core TeamThis issue will be implemented by JaVers core teamfixed & released

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions