Project $$ EnhancerByCGLIB $$ 67a694bd出现在Hibernate中

时间:2011-11-09 09:15:30

标签: java hibernate orm foreign-key-relationship

我有一个文档实体将多对一映射到项目实体。

当我在调试器中调用document.getProject时,在文档对象的项目字段中,我看到有关Project$$EnhancerByCGLIB$$67a694bd的内容。

如何检索实际项目对象?

2 个答案:

答案 0 :(得分:11)

你所看到的是Hibernate-Proxy-Object,它使hibernate能够进行延迟实例化。

首先要问自己的是,您是否真的想要访问原始对象。通常你最好假装代理是你的实际对象,让hibernate做所有的魔术。

如果由于某种原因你真的需要对象本身(例如,如果你需要确切的类型),下面的代码应该有效:

if (object instanceof HibernateProxy) {
   return ((HibernateProxy) object).getHibernateLazyInitializer().getImplementation();
}

你应该知道,上面编写的代码的结果会给你一个不再受休眠控制的分离对象,所以对象的更改不会与数据库同步!

答案 1 :(得分:1)

我收到了包含该字符串的错误消息,因为我忘了将括号添加到方法调用中。确保你没有:

document.getProject

当你真的这么说:

document.getProject()