我有一个 Java 类,其中包含另一个类的列表。
@Entity public class Country {
private Long id;
private List<Hotel> hotels;
public void setId(Long id) {
this.id = id;
}
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="COUNTRY_SEQ")
@SequenceGenerator(name="COUNTRY_SEQ", sequenceName="COUNTRY_SEQ", allocationSize=1)
public Long getId() {
return id;
}
public void setHotels(List<Hotel> hotels) {
this.hotels = hotels;
}
@OneToMany
@JoinTable(
name="COUNTRY_HOTELS",
joinColumns=@JoinColumn(name="COUNTRY_ID"),
inverseJoinColumns=@JoinColumn(name="HOTEL_ID")
)
public List<Hotel> getHotels() {
return hotels;
}
}
当我尝试删除一个国家/地区时,我收到“ORA-02292:完整性约束 (HOT.fk1a1e72aaf2b226a) 已被违反 - 已找到子记录”,因为它无法删除一个国家/地区,因为它的子项 (=Hotels) 仍然存在。
然而,它本来就是这样的!我不想在删除国家/地区时删除我的酒店。
我试过没有任何@Cascade-annotation 但它失败了。我也试过 SAVE_UPDATE,还是失败了。 那么我需要哪个@Cascade-annotation(或者有其他解决方案?):
- 坚持
- 合并
- 删除
- 刷新
- 删除
- SAVE_UPDATE
- 复制
- DELETE_ORPHAN
- 锁定
- 退出
巴特
最佳答案
在删除国家/地区之前,您必须从国家/地区的酒店列表中删除酒店,以便告诉 Hibernate 这些酒店不再有国家/地区。
关于java - Hibernate 注解级联问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6609103/