我有下面的實體類。當用戶首次註冊時,只提供用戶名和密碼,所以帳戶列表(認爲個人資料)是空的。稍後,當他們添加一個帳戶時,用戶對象在客戶端中更新,傳遞給服務器,然後調用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