日期:2014-05-17  浏览次数:20661 次

hibernate 级联删除问题
我做了一个一对多双向关联  做删除的时候报错
java.sql.SQLException: ORA-02292: 违反完整约束条件 (SCOTT.FKCBB) - 已找到子记录


一方
@Entity
@Table(name = "userinfo")
public class UserInfo {

@Id
@GeneratedValue
@Column( name = "id")
private String id;

@Column( name = "name", nullable = true)
private String name;

@Column( name = "sex")
private String sex;

@OneToMany(mappedBy = "userInfo",cascade=CascadeType.REMOVE)
private Set<Orders> orders = new HashSet<Orders>();


多方  
@Entity
@Table(name="orders")
public class Orders {


@Id
@GeneratedValue
@Column(name = "orderno",nullable = true)
private String orderno;

@Column(name = "name")
private String name;

@Column(name = "price")
private String price;

@ManyToOne
@JoinColumn(name="customerid")
private  UserInfo userInfo;


求解了   

------解决方案--------------------
你删除的是一方还是多方?
------解决方案--------------------
一方那边配个inverse = false
------解决方案--------------------
你删除的是一方,你数据库中配了关联的对吧
------解决方案--------------------
那肯定要报错啊,你一方和多方之间有关联,然后删除一方的时候与一方关联的数据怎么办
------解决方案--------------------
msql 数据库的话,在设计表的时候把是否级联的选成cashcad 就好
------解决方案--------------------
引用:
Quote: 引用:

那肯定要报错啊,你一方和多方之间有关联,然后删除一方的时候与一方关联的数据怎么办


对啊  现在就是这个问题,难道只能在数据库上加上cascade,hibernate不能解决这个问题吗



这个问题有两个解决方法(我值知道两个),一是在级联的时候加上cascade,二就是在你删除之前先操作数据库,修改多方与一方级联的那一列的数据