该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-05-27
拜托楼主把我说的那两个打印语句的结果贴出来看看:
System.out.println(this.getClass()); System.out.println(other.getClass()); 还有就是三个打印都使用这个tokenOther的引用之后,还是返回false么? |
|
返回顶楼 | |
发表时间:2009-05-27
说句题外话,楼主的这种实现equals的短路方法是有缺陷的。
楼主可以自己在Eclipse中,生成某一个model的equals方法,看看短路方法应该如何实现(不过推荐的实现方法碰到Hibernate代理对象会不好使,需要其他办法解决)。 |
|
返回顶楼 | |
发表时间:2009-05-27
linliangyi2007 写道 靠这也叫新手帖!!
javaeye上有几个新手提这样的问题啊!! 提问题也要有层次好啵?动不动就评新手帖,无语! 感觉java阿姨已经有点不食人间烟火了,诸如此类的阿姨不知道人间还有我辈这等小老百姓在饱受煎熬,呵呵,牢骚一句。我觉得实践中的问题可能是影响广泛的问题,而非只有理论问题才能入java阿姨的法眼.... |
|
返回顶楼 | |
发表时间:2009-05-27
标题气得也太有噱头了,问题还没弄清楚,就说是hibernat 的bug,不是有点太武断了吗!!!
|
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间:2009-05-27
最后修改:2009-05-27
给所有人建议,hibernate中取ID有更好的通用方法,明天我来贴代码,可以放在BaseModel中的。
|
|
返回顶楼 | |
发表时间:2009-05-27
楼上几个说我标题有问题的,看到“可能”两个字没!
顶多说我是标题党嘛,嘎嘎,就是想吸引更多的大牛来关注啊 |
|
返回顶楼 | |
发表时间: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~~~谁知道下一次在哪里啊 |
|
返回顶楼 | |
发表时间:2009-05-27
linliangyi2007 写道 兄弟,你说法是对的,但你没有解决我遇到的问题。我的问题是,传入equals方法的对象根本是个所有属性都是null的新对象,跟在equals外取到的对象不是一个东西。
非常郁闷啊,我也不希望是hibernate的bug,要知道,第一,我感情上很喜欢Hibernate;第二,我有大量的应用基于hibernate,它要出问题了,我可郁闷大发了!目前这个症状仅在我程序的一个地方出现;大部分情况是很正常的,but~~~谁知道下一次在哪里啊 兄弟,你啥时候能把我说的测试代码运行一下,我其实不是很关心other.getClass(),我其实更关心this.getClass()。 |
|
返回顶楼 | |
发表时间:2009-05-27
jianfeng008cn 写道 cglib 替换对象是很正常的,你能不能明确的说明错在哪了?你的替换了对象是什么意思啊?这帖子看得真冒火。
ps:你一个劲强调自己水平好有意义嘛! 我发贴可不强调你说的,这样的说法容易歪楼哈!! 替换了对象的意思就是:cglib给我new了一个所有属性都=null的FlowToken对象,这个对象是FlowToken的一个proxy没错,但什么属性值都取不到,再次强调所有方法返回null。我不知道为啥发生这样的情况。 |
|
返回顶楼 | |