我的問題很簡單:
一個user
有一個address
,address
由city
,state
和country
。如何堅持但避免唯一鍵異常?
所以對我有這樣的結構:
public class User {
..
//bi-directional many-to-one association to UserAddress
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name="id_user_address")
private UserAddress userAddress;
..
}
注意CascadeType
不已經CascadeType.ALL
因爲如果用戶被刪除它不會影響cities, states and countries
創建。
public class UserAddress {
..
//bi-directional many-to-one association to AddressCity
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.})
@JoinColumn(name="id_city")
private AddressCity addressCity;
//bi-directional many-to-one association to AddressCountry
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name="id_country")
private AddressCountry addressCountry;
//bi-directional many-to-one association to AddressState
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name="id_state")
private AddressState addressState;
..
}
我的問題是,如果我嘗試註冊具有例如相同city
這讓我異常的用戶:
重度:com.mysql.jdbc.exceptions.jdbc4:致.MySQLIntegrityConstraintViolationException:重複錄入「坎皮納斯」關鍵「city_UNIQUE」
我怎樣才能避免這種constraint
,保持CASCADE
?
還有誰知道如何在我的JSF項目中顯示JPA所做的查詢?