我将 Hibernate 与 JPA 一起使用,并且有这样的关系:
@Entity
@Table(name = "first")
public class First {
...
@OneToMany(mappedBy = "first")
private List<Availability> availabilities;
...
}
@Entity
@Table(name = "second")
public class Second {
...
@OneToMany(mappedBy = "second")
private List<Availability> availabilities;
...
}
@Entity
@Table(name="availability")
public class Availability implements Serializable {
@Id
@ManyToOne
@JoinColumn(name = "first_id")
private First first;
@Id
@ManyToOne
@JoinColumn(name = "second_id")
private Second second;
@Column(name = "availability")
private Integer availability;
...
hashcode and equals
}
我想分别管理这 3 个实体。第一个和第二个工作正常,但是当我尝试 merge() 第三个时,postgresql 得到一个空值而不是 id,并且抛出了约束违规异常。为什么?我什至可以在这个实体上使用合并来向表中添加新行吗?
更新:合并是这样的:
public Availability setAvailability(Availability a) {
return em.merge(a);
}
可用性从前端反序列化(仅提一下,“关键”类的集合在其中分离)。