Javers抛出异常时属性为null

问题描述:

我有这样的问题,即,如果一个复合的属性为null(注意这不是ID),Javers抛出一个异常:Javers抛出异常时属性为null

JaversException PROPERTY_ACCESS_ERROR: error getting value from property 'Method User getPersonEntity; //declared in: HibernateProxy_$$_javassist_356' on target object of type 'HibernateProxy_$$_javassist_356', cause: java.lang.reflect.InvocationTargetException: null 

JaversException PROPERTY_ACCESS_ERROR: error getting value from property 'Method List getAddress; //declared in: ... **Object property of the audited object**, cause: java.lang.reflect.InvocationTargetException: null 

因此,想象下面的结构:

用户包含人,其中包含地址 - 具有自己的属性的所有对象。

如果我提交了一个User对象,如果Person或Address有一个null属性,那么Javers会因上述错误而失败。

Javers如何处理空属性?它可以被配置为不记录一个空属性或将其记录为空?当一个属性为空时,我看不到它应该抛出异常的原因?!似乎没有关于如何处理空属性的任何文档。

JaVers处理空值没有任何问题,但你的getter没有返回null,但抛出异常。 似乎你的对象是一个Hibernate动态代理,并且不能被初始化。

+0

自从Hibernate Session仍然打开后,发生这种情况有点奇怪。它应该可以在没有问题的情况下延迟加载对象。 JaVers错误也没有给我多少信息,只是该属性为空。所以目前还不清楚究竟发生了什么。有没有办法启用JaVers的调试级别日志记录以查看有关发生的更多信息? – Stef

+0

JaVers说“PROPERTY_ACCESS_ERROR错误从属性获取值”,这是真的。你的getter抛出一个异常,你应该面对它:) –

+1

尝试Hibernate的unproxy钩子,请参阅https://javers.org/documentation/spring-integration/#hibernate-unproxy-hook –