我正在尝试使用JaVers来存储我无法更改的第三方库中的对象。对象定义类似于:
interface TheirObject extends WithId{
//Other properties here...
}
interface WithId{
String getId();
}
具有该接口的各种实现。无论如何,ID字段都没有注释。
我尝试使用默认的JaVers配置并收到以下错误:
JaversException MANAGED_CLASS_MAPPING_ERROR: given javaClass 'interface TheirObject' is mapped to ValueObjectType, expected EntityType
所以我按如下方式配置了JaVers:
javers = JaversBuilder.javers()
.registerEntity(new EntityDefinition(TheirObject.class))
.build();
哪个例外:
JaversException ENTITY_WITHOUT_ID: Class 'TheirObject' mapped as Entity has no Id property. Use @Id annotation to mark unique and not-null Entity identifier
所以我尝试了解id
字段:
javers = JaversBuilder.javers()
.withMappingStyle(MappingStyle.BEAN)
.registerEntity(new EntityDefinition(TheirObject.class, "id"))
.build();
哪个例外:
JaversException PROPERTY_NOT_FOUND: Property 'id' not found in class 'TheirObject'. If the name is correct - check annotations. Properties with @DiffIgnore or @Transient are not visible for JaVers.
我尝试了id
的一些不同变体(例如Id
,getId
),但似乎没有任何效果,我没有发现文档对于如何解决问题非常有用继续。
有人可以帮我正确配置JaVers,以便我可以用它来跟踪这些对象的变化吗?感谢。
更新:我已经更改了上面的界面以更好地反映这个问题,因为我过度简化了我的示例确实可以正常工作的地方。
答案 0 :(得分:2)
JaversBuilder.javers()
.registerEntity(new EntityDefinition(TheirObject.class, "id"))
.build();