两个表 class{cid(pk),cname}, student{sid,sname,scid(fk)} student跟class是一对多关系student里的scid是参照class里的cid
实体类:
class{
private string cid;
private string cname;
@id
public string getcid();
``````````````
}
student{
private string sid;
private string sname;
private Class class;
@manytoone
@JoinColumn(name="cid")
public Class getclass();
}
现在数据库里已经有了一条记录:
class表:001 高三
student表:123456 小明 001
我要修改class表里的cid:001 想级联更新student表里的scid:001
用:Query query = session.createQuery(update Class set cid='002' where cid='001'")
query.executeUpdate();
结果报错:由于有外键关联而不能执行
第一种方式,把关联的student的数据删除掉,再删除class的那条数据
第二种方式,class表添加个字段区分数据是否是删除的,查询的时候在条件中判断只查询没有被删除的数据,删除的时候只需要修改这个字段的值设置为删除状态。
不太懂。其实我想要的就是当我修改class表里面主键cid时,会同时级联修改student表里的外键scid
把关联Student的数据都删除掉,就没有外联数据了,就可以删除Class的那条数据了。
我是要在class表里修改主键cid,然后级联修改student表里面的scid,而不是删除
@JR是菜鸟: 那也是一样的道理,先修改student的,再修改class的。