我在做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;
}
这个函数出了问题,需要加上我写的两行注释,才能将数据保存到库中。
分享到:
相关推荐
Java实体类生成工具是一种高效的开发辅助软件,特别适用于处理大量数据模型对象的场景。在Java开发过程中,我们经常需要创建代表数据库表结构的实体类,这些类通常包含大量的getter、setter、构造函数以及对应的注解...
对比两个实体类,可能涉及到对象的属性比较,例如使用Apache的EqualsBuilder和HashCodeBuilder来实现对象的equals()和hashCode()方法,以确保对象内容一致时返回相同的结果。此外,还可以使用Lombok库的@...
在Java编程中,正确实现`equals`方法至关重要,它不仅影响对象的比较逻辑,还直接关系到集合类(如`HashSet`、`HashMap`等)的行为。本文将深入探讨Java中`equals`方法的一些常见陷阱,并提供相应的解决方案。 ####...
2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2.javaequals()方法.zip2....
C#类通常包含属性(public字段)和构造函数,而Java类可能包含私有字段、getter和setter方法,以及toString()、equals()和hashCode()等实用方法。 5. **输出结果**:最后,生成的代码会被保存为源文件,如.cs文件...
例如,你可以指定实体类的包名、类名前缀、是否生成getter和setter方法、是否生成equals和hashCode方法等。确保正确配置这些信息是成功使用该工具的关键步骤。 执行GeneratorSqlmap中的主方法后,工具会读取配置好...
生成的实体类通常包含属性(对应数据库表的列)、getter和setter方法、以及可能的构造函数和equals、hashCode等方法。 使用Java实体类生成器有以下几个关键知识点: 1. **ORM框架**:实体类在ORM框架中起到桥梁...
在Java编程语言中,了解如何正确使用`==`和`equals()`方法是非常关键的,因为它们在比较对象和基本类型时有不同的行为。下面将详细解释这两个方法的工作原理、使用场景以及一些常见误区。 首先,`==`运算符主要用于...
这个工具能够自动分析表的字段、数据类型,并生成对应的Java属性,同时还能根据主键和外键关系生成相应的getter和setter方法,以及equals、hashCode和toString等常用方法,极大地减少了手动编写这些代码的工作量。...
Java 中 equals 和 == 的区别 Java 中的 equals 和 == 是两个不同的概念,很多开发者容易混淆它们。理解这两个概念的区别是非常重要的,因为它们对编程的正确性和性能都有很大的影响。 首先,我们需要了解 Java ...
深入解析Java对象的equals()和hashCode()的使用 在Java语言中,equals()和hashCode()两个函数的使用是紧密配合的,你要是自己设计其中一个,就要设计另外一个。在多数情况下,这两个函数是不用考虑的,直接使用它们...
java_equals用法,用来熟悉重写equals方法的
为了解决这个问题,我们可以创建一个工具类`EnumUtil`,提供一个静态方法来反向根据枚举的描述值赋值: ```java public class EnumUtil { public static <T extends Enum<T>> T getByDescription(Class<T> enum...
这个问题的原因在于`MyTest`类的`equals`方法只比较了`x`字段,而没有考虑`FieldPosition`类的其他属性。这违反了`equals`方法的对称性原则。因此,我们在重写`equals`时,不仅要确保所有相关字段都被正确比较,还要...
在 Java 中,equals 方法是一个非常重要的方法,它用于判断两个对象是否相等,而不是判断两个对象的引用是否相同。在 Object 基类中,equals 方法的实现是使用“==”操作符来比较对象的引用,但是这并不满足实际需求...
在Java编程语言中,`equals()` 和 `hashCode()` 方法是对象的基本组成部分,它们在很多场景下都发挥着至关重要的作用。这两个方法与对象的相等性比较和哈希表(如HashMap、HashSet)的运作紧密相关。这篇博客将深入...
Java重写equals同时需要重写hashCode的代码说明,以及如何重写hashCode方法,此代码演示按照effective java书籍说明的重写思路。代码中演示了使用集合存储对象,并且对象作为key,需重写equals和hashCode.
实体类,也称为JavaBean,是表示数据库表中的记录的Java对象。它们提供了面向对象的方式来操作数据,使得代码更加清晰、易于理解和维护。`Hibernate`是一个流行的Java ORM(对象关系映射)框架,它允许开发者用Java...
这个方法在Java的Object类中定义,并且所有的Java类都默认继承了Object类,因此所有类的对象都可以使用`equals()`方法。`equals()`方法的初衷是检查两个对象的内容是否相等,而不仅仅是它们的引用是否相同。在Java...