java - Hibernate 对象和 Java 反射

标签 java hibernate

我使用下面的代码行从 hibernate 中延迟加载一个对象 Object object = session.load(Class.forName(javaType), objectId);

如果我打印 object.getClass().getSimpleName() 它会显示 hibernate 代理的名称,而不是我预期的实现类。

但是,如果我在这个代理对象上使用反射来返回一个名为 children 的属性,如下所示: List children = (List) object.getClass().getMethod("getChildren", new Class[ {}).invoke(object, new Object[]{});

它返回一个对象列表,其中任何对象的 object.getClass().getSimpleName() 返回实现类名。为什么这些对象不返回代理对象名称?

最佳答案

列表本身可以延迟加载,但如果枚举元素,则需要一个 sql 查询,并且为每个元素创建代理不会提高性能(相反)。

关于java - Hibernate 对象和 Java 反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7471181/

相关文章:

java - 无法从对 servlet 的 ajax 调用中检索 session 属性

java - setText 未在 Runnable 中更新

java - 如何在使用大量记录时使用 Hibernate 更快地进行更新

java - Hibernate问题-映射ArrayList

java - 用于大型数据集二分搜索的数据结构

java - 将数组作为参数放入 java 字节码中的函数

java - 可执行Jar无法运行? (无权限访问代码)

java - Hibernate 三重多对多连接

java - 具有 @ManyToMany 关系且无导航的 JPA 查询

java - Spring JPA hibernate 副本