论坛首页 入门技术论坛

Hibernate Bean的Equals方法重载问题

浏览 15522 次
该帖已经被评为新手帖
作者 正文
   发表时间:2009-05-27  
拜托楼主把我说的那两个打印语句的结果贴出来看看:
System.out.println(this.getClass());  
System.out.println(other.getClass());

还有就是三个打印都使用这个tokenOther的引用之后,还是返回false么?
0 请登录后投票
   发表时间:2009-05-27  
说句题外话,楼主的这种实现equals的短路方法是有缺陷的。

楼主可以自己在Eclipse中,生成某一个model的equals方法,看看短路方法应该如何实现(不过推荐的实现方法碰到Hibernate代理对象会不好使,需要其他办法解决)。
0 请登录后投票
   发表时间:2009-05-27  
linliangyi2007 写道
靠这也叫新手帖!!
javaeye上有几个新手提这样的问题啊!!
提问题也要有层次好啵?动不动就评新手帖,无语!


感觉java阿姨已经有点不食人间烟火了,诸如此类的阿姨不知道人间还有我辈这等小老百姓在饱受煎熬,呵呵,牢骚一句。我觉得实践中的问题可能是影响广泛的问题,而非只有理论问题才能入java阿姨的法眼....
0 请登录后投票
   发表时间:2009-05-27  
标题气得也太有噱头了,问题还没弄清楚,就说是hibernat 的bug,不是有点太武断了吗!!!
0 请登录后投票
   发表时间:2009-05-27  
linliangyi2007 写道

   4. @Override  
   5. public boolean equals(Object obj) {  
   6.     if (this == obj)  
   7.         return true;  
   8.     if (obj == null)  
   9.         return false;  
  10.     if (!(obj instanceof FlowToken))  
  11.         return false;  
  12.     final FlowToken other = (FlowToken) obj;  
  13.     if (id == null || other.getId() == null) {  
  14.         return false;  
  15.     } else if (!id.equals(other.getId()))  
  16.         return false;  
  17.     return true;  
  18. }  


这里的
  13.     if (id == null || other.getId() == null) {  
  14.         return false;  
  15.     } else if (!id.equals(other.getId()))  
  16.         return false;  

怎么说也应该用 getter来访问把, 也就是
  13.     if (getId() == null || other.getId() == null) {  
  14.         return false;  
  15.     } else if (!getId().equals(other.getId()))  
  16.         return false;  



你可以看看我原来写的, 这标题取得, 确实不是 hibernate 的bug 啊
http://dev.sunteya.com/svn/flyer/trunk/core/src/main/java/com/sunteya/flyer/domain/AbstractEntity.java
0 请登录后投票
   发表时间:2009-05-27   最后修改:2009-05-27
给所有人建议,hibernate中取ID有更好的通用方法,明天我来贴代码,可以放在BaseModel中的。
0 请登录后投票
   发表时间:2009-05-27  
楼上几个说我标题有问题的,看到“可能”两个字没!
顶多说我是标题党嘛,嘎嘎,就是想吸引更多的大牛来关注啊
0 请登录后投票
   发表时间:2009-05-27  
Sunteya 写道
linliangyi2007 写道

   4. @Override  
   5. public boolean equals(Object obj) {  
   6.     if (this == obj)  
   7.         return true;  
   8.     if (obj == null)  
   9.         return false;  
  10.     if (!(obj instanceof FlowToken))  
  11.         return false;  
  12.     final FlowToken other = (FlowToken) obj;  
  13.     if (id == null || other.getId() == null) {  
  14.         return false;  
  15.     } else if (!id.equals(other.getId()))  
  16.         return false;  
  17.     return true;  
  18. }  


这里的
  13.     if (id == null || other.getId() == null) {  
  14.         return false;  
  15.     } else if (!id.equals(other.getId()))  
  16.         return false;  

怎么说也应该用 getter来访问把, 也就是
  13.     if (getId() == null || other.getId() == null) {  
  14.         return false;  
  15.     } else if (!getId().equals(other.getId()))  
  16.         return false;  



你可以看看我原来写的, 这标题取得, 确实不是 hibernate 的bug 啊
http://dev.sunteya.com/svn/flyer/trunk/core/src/main/java/com/sunteya/flyer/domain/AbstractEntity.java



兄弟,你说法是对的,但你没有解决我遇到的问题。我的问题是,传入equals方法的对象根本是个所有属性都是null的新对象,跟在equals外取到的对象不是一个东西。
非常郁闷啊,我也不希望是hibernate的bug,要知道,第一,我感情上很喜欢Hibernate;第二,我有大量的应用基于hibernate,它要出问题了,我可郁闷大发了!目前这个症状仅在我程序的一个地方出现;大部分情况是很正常的,but~~~谁知道下一次在哪里啊
0 请登录后投票
   发表时间:2009-05-27  
linliangyi2007 写道
兄弟,你说法是对的,但你没有解决我遇到的问题。我的问题是,传入equals方法的对象根本是个所有属性都是null的新对象,跟在equals外取到的对象不是一个东西。
非常郁闷啊,我也不希望是hibernate的bug,要知道,第一,我感情上很喜欢Hibernate;第二,我有大量的应用基于hibernate,它要出问题了,我可郁闷大发了!目前这个症状仅在我程序的一个地方出现;大部分情况是很正常的,but~~~谁知道下一次在哪里啊

兄弟,你啥时候能把我说的测试代码运行一下,我其实不是很关心other.getClass(),我其实更关心this.getClass()。
0 请登录后投票
   发表时间:2009-05-27  
jianfeng008cn 写道
cglib 替换对象是很正常的,你能不能明确的说明错在哪了?你的替换了对象是什么意思啊?这帖子看得真冒火。
ps:你一个劲强调自己水平好有意义嘛!


我发贴可不强调你说的,这样的说法容易歪楼哈!!

替换了对象的意思就是:cglib给我new了一个所有属性都=null的FlowToken对象,这个对象是FlowToken的一个proxy没错,但什么属性值都取不到,再次强调所有方法返回null。我不知道为啥发生这样的情况。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics