我在两个表 Person 和 Address 以及中间表 Person_Address 之间存在多对多关系。我有这些实体的 Daos 和服务
我想要的是,当添加一个人的地址列表时,如果数据库系统中已经存在该地址,则应该将这些地址的 ID 添加到 Person_Address 表中。
发生的情况是具有不同 ID 的重复值。
可能的方法是在添加之前检查数据库,但如果我这样做,那么我将编写自己的 SQL 查询而不是 hibernate。有没有办法让我在 hibernate 中实现我的目标?
人员类别
@Entity
@Table(name = "PERSON")
public class Person {
@Id
@Column(name = "personID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String name;
private String surName;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "PERSON_ADDRESS", joinColumns = {
@JoinColumn(name = "PERSONID")}, inverseJoinColumns = {
@JoinColumn(name = "ADDRESSID")})
private List<Address> addresses = new ArrayList<>();
<小时/>
地址类别
@Entity
@Table(name = "ADDRESS")
public class Address {
@Id
@Column(name = "addressID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToMany(cascade = CascadeType.ALL, mappedBy = "addresses")
private List<Person> residents;
private String street;
private String state;
private String country;
private String postCode;
最佳答案
如果实体没有 ID。 Hibernate 创建了不同的更新。
您应该在前端使用地址预填充。或者在保存之前使用 Criteria API 搜索输入的地址
关于java - hibernate 、级联操作、重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31879240/