两张表
hospital( @OneToMany (cascade = CascadeType.ALL, mappedBy = "hospital")
public Set <Department> getDepartments ())department我删除 hospital 的 时候 报错 说
DELETE 语句与 REFERENCE 约束"FK6424E6648E01DE3"冲突。该冲突发生于数据库"FusionCP",表"dbo.CP_DEPARTMENT", column 'HospitalID'。我级联cascade = CascadeType.ALL 设置了 啊
而且 我如果 重新 登陆页面
删除就没问题了 。。
这个 是什么原因 ?SESSION 里面 外键 没建 还绑定着 ?
hospital( @OneToMany (cascade = CascadeType.ALL, mappedBy = "hospital")
public Set <Department> getDepartments ())department我删除 hospital 的 时候 报错 说
DELETE 语句与 REFERENCE 约束"FK6424E6648E01DE3"冲突。该冲突发生于数据库"FusionCP",表"dbo.CP_DEPARTMENT", column 'HospitalID'。我级联cascade = CascadeType.ALL 设置了 啊
而且 我如果 重新 登陆页面
删除就没问题了 。。
这个 是什么原因 ?SESSION 里面 外键 没建 还绑定着 ?
@Entity
@Table (name = "CP_HOSPITAL", schema = "dbo", catalog = "FusionCP")
public class Hospital extends OutDomain
{
@OneToMany (mappedBy = "hospital",cascade=CascadeType.ALL)
public Set <Department> getDepartments ()
{
logger.entering ();
if (logger.isExitingLoggable ())
{
logger.exiting (String.valueOf (departments));
}
return departments;
}@Entity
@Table (name = "CP_DEPARTMENT", schema = "dbo", catalog = "FusionCP")
public class Department extends OutDomain
{
@ManyToOne
@JoinColumn (name = "HospitalID", nullable = false)
public Hospital getHospital ()
{
logger.entering ();
if (logger.isExitingLoggable ())
{
logger.exiting (String.valueOf (hospital));
}
return hospital;
}
我主要奇怪 是在 为什么 我刚添加好 然后删除会报错
但我 重开 页面 就不会有问题
重新 登陆下 网页 就 可以删除了 。
难道 SESSION 里面 的
ELETE 语句与 REFERENCE 约束"FK6424E6648E01DE3"冲突。该冲突发生于数据库"FusionCP",表"dbo.CP_DEPARTMENT", column 'HospitalID'。
一直绑定着
我也知道 ALL 不太好
我现在 就想功能实现 是在 不行的 话我用手动删除
我就想问下 可能 什么原因 导致 这个问题 的
关注:hbm配置文件,看cascade,inverse两样的设置是否如下正确设置了。
解决方案:①1对多双向关联时,1这一方设置<set...inverse="true" cascade="all或者save-update(不必要设置all-delete-orphan)">。②1对多单向关联时,1这一方设置<set...cascade="all-delete-orphan">。 ⊙双向关联可以设置inverse为true,级联删除时直接一条sql删除关联对象而不是一条sql先update外键再一条sql删除关联对象。
⊙单向关联说明设置不了inverse属性,级联删除时也就不能一条sql直接删除关联对象,而是一条sql先update外键再一条sql删除关联对象。 ⊙cascade为all在非控制反转的级联删除时:只表示取消关联即只是update外键为NULL,而不删掉关联对象。
⊙cascade为all-delete-orphan在非控制反转的级联删除时:表示先update外键为NULL,再删掉孤儿(orphan)对象。