我有一个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)仍然存在时无法删除国家/地区。

但是,像这样是MEANT!删除国家/地区后,我不想删除酒店。

我尝试没有任何@ Cascade-annotation,但是失败了。我也尝试了SAVE_UPDATE,但仍然失败。
所以我需要哪个@ Cascade-annotation(或者还有其他解决方案?):


坚持
合并
去掉
刷新
删除
SAVE_UPDATE
复制
DELETE_ORPHAN

EVICT


巴特

最佳答案

您必须在删除国家/地区之前将其从国家/地区的酒店列表中删除,以便告诉Hibernate这些酒店不再具有国家/地区。

07-24 14:41