Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 在双向一对多映射中设置级联_Hibernate_Jpa - Fatal编程技术网

Hibernate 在双向一对多映射中设置级联

Hibernate 在双向一对多映射中设置级联,hibernate,jpa,Hibernate,Jpa,我刚刚开始冬眠,似乎还不完全了解级联 因此,我有工作和客户类,我想要实现的是: 如果我删除客户机,作业也会被删除 如果我删除了一个作业,客户端不会被删除 我的模型目前看起来像这样: @实体 公共类客户端{ @身份证 @生成值 私人长客户; 私有字符串名称; @OneToMany(cascade=CascadeType.ALL,orphan=true) 私人名单工作; } @实体 公开课工作{ @身份证 @生成值 私人长期工单; 私有字符串标题; @多通(级联=级联类型.ALL) @JoinCo

我刚刚开始冬眠,似乎还不完全了解级联

因此,我有工作和客户类,我想要实现的是:

  • 如果我删除客户机,作业也会被删除
  • 如果我删除了一个作业,客户端不会被删除
  • 我的模型目前看起来像这样:

    @实体
    公共类客户端{
    @身份证
    @生成值
    私人长客户;
    私有字符串名称;
    @OneToMany(cascade=CascadeType.ALL,orphan=true)
    私人名单工作;
    }
    
    @实体
    公开课工作{
    @身份证
    @生成值
    私人长期工单;
    私有字符串标题;
    @多通(级联=级联类型.ALL)
    @JoinColumn(name=“客户号”)
    私人客户;
    //为了简洁起见,省略了getter、setter和一些字段
    }
    

    提前感谢您

    使用
    cascade
    您可以在实体上进行传递。如果一个实体的状态已更改,则它可以更改关联实体的状态

  • 如果删除客户端->删除所有相关作业
    您可以使用:

    • @OneToMany(mappedBy=“client”,cascade=CascadeType.REMOVE)//或者您可以将所有操作与CascadeType进行级联。全部
    • @OneToMany(mappedBy=“client”,orphaneremovation=true)

  • 如果删除作业->不删除关联的客户端
    您应该排除REMOVE的级联类型,显式枚举您需要的级联类型,或者根本不指定
    cascade
    属性