$$ _ Javasassist_11在java中意味着什么?

时间:2012-01-18 06:35:36

标签: java hibernate

我在java中使用hibernate。我通过运行from MyObject where field='name'之类的查询来获取对象列表。这运行成功,当我执行list.size()时它也返回1.但是当我list.get(0)时,我得到一个所有字段为null的对象。在我悬停在对象上的调试中,它显示如下:com.xyz.data.MyObect_$$_javasassit_11。这意味着什么?

2 个答案:

答案 0 :(得分:1)

这是Hibernate如何实现lazy loading的副作用。 com.xyz.data.MyObect_$$_javasassit_11是由Hibernate创建的子类,它覆盖了所有方法,首先确保实体已加载,然后将调用tp转发给实际实例。

通常这是透明的,但在某些情况下它可能很重要。其中最常见的是可怕的LazyInitializationException。如果您的调试器支持监视表达式,您可以使用访问器方法获取字段的实际值(而不是查看字段xmyobject.getX()创建表达式。)

答案 1 :(得分:0)

这是Hibernate为您创建的代理类。这允许hibernate(除其他外)缓存数据和延迟加载实例变量数据等等。