我有下面的实体类。当用户首次注册时,只提供用户名和密码,所以帐户列表(认为个人资料)是空的。稍后,当他们添加一个帐户时,用户对象在客户端中更新,传递给服务器,然后调用entityManager.merge(user)。当用户合并时,帐户被添加6次到数据库,并且提供的地址被添加三次。我不知道为什么。我想要添加帐户一次,只添加一个地址。关于可能发生什么的任何想法?JPA合并造成重复
@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...
}
您可以像 @Column(name = “ID”)或 @Column(name = “拉链”) 掉落的东西,如果你不改变文件名。 – whiskeysierra 2009-12-18 22:56:19
实时服务器默认为全部大写表格和列名称,而我的测试服务器默认为小写字母,因此看起来比更改设置更容易。 – chris 2009-12-18 23:00:39
您是否找到解决方案? – 2011-05-19 16:36:59