chr*_*ris 5 java merge jpa duplicates
我有下面的实体类.当用户首次注册时,仅提供用户名和密码,因此帐户列表(思考配置文件)为空.稍后,当他们添加帐户时,会在客户端更新用户对象,传递给服务器,然后调用entityManager.merge(user).合并用户时,会将帐户添加6次到数据库,并将提供的地址添加三次.我不知道为什么.我想要添加一次帐户,只添加一个地址.关于可能发生的事情的任何想法?
@Entity
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;
@OneToMany(cascade=CascadeType.ALL)
@JoinTable(name="user_accounts")
private List<Account> accounts;
//...getters and setters ...
}
@Entity
public class Account implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private long id;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="address")
private Address address;
//...getters and setters...
}
@Entity
public class Address implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="street")
private String street;
@Column(name="city")
private String city;
@Column(name="state")
private String state;
@Column(name="zip")
private String zip;
//...getters and setters...
}
Run Code Online (Sandbox Code Playgroud)
小智 0
您是否尝试过:
persist(address)
account.setAddress(address)
persist(account)
user.setAccount(account)
merge(user)
Run Code Online (Sandbox Code Playgroud)
我认为是因为地址和帐户已经生成了id并且您指定了级联导致了这个问题。
归档时间: |
|
查看次数: |
3005 次 |
最近记录: |