我在做JPA的vote、voteItem试验时,vote中含有Set<VoteItem> items 集合,
首先,申请一个vote:
Vote vote = new Vote();
然后new三个voteItem项:
VoteItem item1 = new VoteItem();
VoteItem item2 = new VoteItem();
VoteItem item3 = new VoteItem();
然后将三个voteItem加入vote的items集合中,
vote.items.add(item1);
vote.items.add(item2);
vote.items.add(item3);
最后,保存:
em.persist(vote)
结果,调试律条出现,而数据库中,只有第一条即voteItem1被保存,其他两个没有保存。
最后查明原因,是VoteItem类生成时,
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
VoteItem other = (VoteItem) obj;
if (id == null) {
if (other.id != null)
return false;
if (other.name.equals(this.name) == false) //就是这里增加代码,因为new时,id == null
return false; //就是这里增加代码,靠name来比较
}
else if (!id.equals(other.id)){
return false;
}
return true;
}
这个函数出了问题,需要加上我写的两行注释,才能将数据保存到库中。
分享到:
相关推荐
2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2....
java_equals用法,用来熟悉重写equals方法的
解析Java对象的equals()和hashCode()的使用
Java中的==与equals()实例方法Java中测试两个变量是否相等的方法有两个,一个是用==运算符,另一个就是object类提供的equals()方法。2
Java重写equals同时需要重写hashCode的代码说明,以及如何重写hashCode方法,此代码演示按照effective java书籍说明的重写思路。代码中演示了使用集合存储对象,并且对象作为key,需重写equals和hashCode.
能够加强对java中equals与==区别的理解。
Java中equals方法隐藏的陷阱
重载equals方法示例重载equals方法示例重载equals方法示例重载equals方法示例重载equals方法示例
java代码-使用java解决实现Student类的equals重载函数的源代码 ——学习参考资料:仅用于个人学习使用!
java中equals和==的区别.doc java中equals和==的区别.doc
浅谈Java中的equals和==Java开发Java经验技巧共6页.pdf.zip
Java语言深入_equals
本文讲述了什么时候重写equals方法和如何重写equals方法。
07.java等号和equals的区别.avi
Java中的equals()和hashCode()契约Java开发Java经验技巧共3页.pdf.zip
本文介绍了Java语言不直接支持关联数组,可以使用任何对象作为一个索引的数组,但在根Object类中使用 hashCode()方法明确表示期望广泛使用HashMap。理想情况下基于散列的容器提供有效插入和有效检索;直接在对象模式...
java 资料 equals 与== 的区别
Java equals 方法与hashcode 方法的深入解析.rar
如果一个类的hashCode()方法没有遵循上述要求,那么,当这个类的两个实例对象用equals()方法比较的结果相等时,他们本来应该无法被同时存储进set集合
NULL 博文链接:https://zpointer.iteye.com/blog/1058337