两张表 
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 里面 外键 没建  还绑定着 ?

解决方案 »

  1.   


    @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;
        }
    我主要奇怪 是在  为什么  我刚添加好  然后删除会报错
    但我 重开 页面 就不会有问题 
      

  2.   

    弱弱的猜一下,all级别的级联包括delete吗?
      

  3.   

    all包含所有的权限所以一般不建议使用
      

  4.   

    仅供参考:hibernate的cascade简单理解就是为你多做事情。他和关系维护不一样,具体的我也忘了。。
      

  5.   

    注解的我不知道,但配置写法的all肯定不是最高级别的
      

  6.   

    问题是  我为什么  
    重新 登陆下  网页  就 可以删除了 。
    难道 SESSION 里面 的 
    ELETE 语句与 REFERENCE 约束"FK6424E6648E01DE3"冲突。该冲突发生于数据库"FusionCP",表"dbo.CP_DEPARTMENT", column 'HospitalID'。
    一直绑定着 
    我也知道 ALL  不太好 
    我现在 就想功能实现  是在 不行的  话我用手动删除 
    我就想问下  可能 什么原因 导致  这个问题   的
      

  7.   

    5.级联删除时,待删除的关联对象没有被删除,而只是取消关联,将关联外键被设为NULL,。 
    关注: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)对象。