我将 Hibernate 与代理一起使用,并且获得属于以下类的对象test.DBUser$$EnhancerByCGLIB$$40e99a2d
.
是否有 Hibernate 方法来检索基类(test.DBUser
在这种情况下)来自代理class?我知道关于Hibernate.getClass()
,但需要一个Object
,当我正在寻找一种将 a 作为输入的方法时Class
.
虽然我真的很喜欢 Flavio 发布的方法的简单性,但我无法在生产代码中使用它,除非它被记录为受支持。此外,如果您在 LazyInitializer 上调用 .getImplementation(),它将强制代理初始化(如果尚未初始化),这会对性能产生负面影响。我提出了这种方法来解决这两个问题:
public static Class<?> getClassForHibernateObject(Object object) {
if (object instanceof HibernateProxy) {
LazyInitializer lazyInitializer =
((HibernateProxy) object).getHibernateLazyInitializer();
return lazyInitializer.getPersistentClass();
} else {
return object.getClass();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)