0
我目前面臨以下問題:我有countries
和cities
之間的關係。如你所想,這種關係相當簡單,country
可以有多個cities
,而city
只屬於一個country
。一旦我刪除country
我想保留我的數據庫中存在的cities
。父母被刪除時保留孩子
我的域模型看起來如下:
類國家:
@Entity
@Table(name = "COUNTRIES")
public class Country extends BaseEntity {
private String name;
private Set<City> cities = new HashSet<>();
@Column(name = "NAME", length = 80, nullable = false, unique = true)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@OneToMany(fetch = FetchType.LAZY, mappedBy = "country", cascade = CascadeType.ALL)
public Set<City> getCities() {
return cities;
}
public void setCities(Set<City> cities) {
this.cities = cities;
}
}
類市:
@Entity
@Table(name = "CITIES")
public class City extends BaseEntity {
private String name;
private Country country;
@Column(name = "NAME", length = 120, nullable = false)
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "COUNTRY_ID", nullable = true)
public Country getCountry() {
return country;
}
public void setCountry(Country country) {
this.country = country;
}
}
只是爲了您的信息,BaseEntity
只需保持主鍵以及實體創建時的信息或改性。
如何從數據庫中刪除某個國家時,我的城市不會被刪除?
好
,我試過了,它看起來很有希望,但一旦我刪除一個國家,我收到DataIntegrityViolationException因爲外鍵沒有相應的條目。所以我想我需要告訴Hibernate將'CITY.COUNTRY_ID'設置爲null或-1? (僅供參考:'City'中的'@ JoinColumn'屬性具有'nullable = true')。 – mhmpl
@mhp這可能是由於你的城市仍然提到你的國家。你需要首先解除。 – mabi
@mabi好的,我不確定Hibernate是否會爲我做這件事。似乎沒有。謝謝! – mhmpl