java - 如何从代理类中检索代理类?

标签 java hibernate

我将 Hibernate 与代理一起使用,我获得了属于类的对象,例如 test.DBUser$$EnhancerByCGLIB$$40e99a2d

是否有 Hibernate 方法从代理 中检索基类(在本例中为 test.DBUser)?我知道 Hibernate.getClass(),但它需要一个 Object,而我正在寻找一种将 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();
  }
}

关于java - 如何从代理类中检索代理类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13540923/

相关文章:

java - JSF 按钮未显示

java - 如何在java中对日期进行排序

java - java中带参数的jFrame表单调用jpanel表单

java - JSF 2.1 + Spring + hibernate 如何正确实现异常处理?

java - Hibernate:Criteria 和 createSQLQuery:如何获取正确的 JSON?

java - 使用 Spring Boot 和 Spring Data JPA 的相同域模型的多个数据库

hibernate - 如何在Kotlin Spring Boot中生成QClass?

java - 如何在查询时设置 hibernate 实体使用的架构名称?

java - 如何设置最短日期

java - Spring boot 以编程方式延迟启动Web应用程序