2007-09-29
关于Hibernate加载数据时的CGLIB动态代理的奇怪问题。
有三个类,分别对应三个表ComAuthPermissionDO、ComAuthOperationDO、ComAuthEntityDO
三个表的关系是:ComAuthPermissionDO分别引用了ComAuthOperationDO、ComAuthEntityDO,即分别跟这两个表形成@ManyToOne关系。
在查询ComAuthPermissionDO,可以联级查到ComAuthOperationDO、ComAuthEntityDO,但非常奇怪,我查出来之后,发现ComAuthOperationDO的equals()方法总是返回false,最后发现,是equals方法在对比两个类的Class时候返回false。于是打印了联级查询的这两个实例的Class:
=============.>>CLass: com.xx.component.authorization.model.ComAuthOperationDO$$EnhancerByCGLIB$$86a21bfb
=============.>>CLass: com.xx.component.authorization.model.ComAuthEntityDO
为什么Hibernate加载ComAuthOperationDO实例时用来CGLIB动态代理,而加载ComAuthEntityDO时却正常呢?
请解答。。。谢谢!
评论
antonyup_2006
2007-10-25
动态代理机制常用有有两种技术:
一个是cglib (class)
还有一个是java dynamic proxy(interface)
你的ComAuthEntityDO是否实现了interface?
一个是cglib (class)
还有一个是java dynamic proxy(interface)
你的ComAuthEntityDO是否实现了interface?
johnnylzb
2007-09-29
pikachu 写道
一般来说,需要lazy的就会被cglib,
不需要lazy的就用原来的。
转新手!
谢谢,但相当奇怪,我查看过Annotation,两个类都设置为LAZY,但为什么ComAuthEntityDO没有使用CGLIB呢?不需要lazy的就用原来的。
转新手!
pikachu
2007-09-29
一般来说,需要lazy的就会被cglib,
不需要lazy的就用原来的。
转新手!
不需要lazy的就用原来的。
转新手!
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 4859 次
- 性别:

- 来自: 广州

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
web.xml如何配置才能让打 ...
xml文件不能打入jar包里面
-- by dingyuan -
关于Hibernate加载数据时 ...
动态代理机制常用有有两种技术: 一个是cglib (class) 还有一个是ja ...
-- by antonyup_2006 -
Hibernate双向关联插入数 ...
哈哈,你这个问题的关键就在“cascade="all"”,如果你这样设置了,你对 ...
-- by fangang -
关于Hibernate加载数据时 ...
pikachu 写道一般来说,需要lazy的就会被cglib,不需要lazy的就 ...
-- by johnnylzb -
关于Hibernate加载数据时 ...
一般来说,需要lazy的就会被cglib,不需要lazy的就用原来的。转新手!
-- by pikachu






评论排行榜