浏览 2346 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-29
有三个类,分别对应三个表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 为什么Hibernate加载ComAuthOperationDO实例时用来CGLIB动态代理,而加载ComAuthEntityDO时却正常呢? 请解答。。。谢谢! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-09-29
一般来说,需要lazy的就会被cglib,
不需要lazy的就用原来的。 转新手! |
|
返回顶楼 | |
发表时间:2007-09-29
pikachu 写道 一般来说,需要lazy的就会被cglib, 谢谢,但相当奇怪,我查看过Annotation,两个类都设置为LAZY,但为什么ComAuthEntityDO没有使用CGLIB呢?
不需要lazy的就用原来的。 转新手! |
|
返回顶楼 | |
发表时间:2007-10-25
动态代理机制常用有有两种技术:
一个是cglib (class) 还有一个是java dynamic proxy(interface) 你的ComAuthEntityDO是否实现了interface? |
|
返回顶楼 | |