java - 如何在 hibernate 中删除父实体并在子FK列中设置null?

标签 java hibernate

这里是示例:

@Entity(name="Cat")
public class Cat
{
    @ManyToOne
    @JoinColumn(name="FoodId",nullable=true)
    public Food getFood()
    {
       // code
...
}

@Entity(name="Food")
public class Food
{
   @OneToMany(mappedBy="food",cascade=?
   public List<Cat> getCats()
   {
        // other code
...
}

我想删除一些食物实体,因此 cat.foodId 列设置为空值,以便为拥有此食物的猫设置 null 值。

Food fish=new Food()

Cat bazillio=new Cat()
bazillio.food=fish

context.remove(fish)

if (bazilio.food==null) success()

据我了解,Cascade.ALL 会删除所有含有该食物的猫(或不删除?) 那么如何解决这个任务呢?

最佳答案

其中一个关系应标记为。我想那将是 Food.getCats() Food-to-Cat 关系上的级联应该为 None,因为猫独立于 Food 实体,这通过 Cat.getFood() 上的 nullable 来证明。

删除食物将像 Ryan 指定的那样简单。

  1. 加载猫,其中食物设置为指定食物
  2. 将 cat.food 设置为 null
  3. 保存猫实例并删除食物实例(可以按任意顺序执行)

关于java - 如何在 hibernate 中删除父实体并在子FK列中设置null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7502726/

相关文章:

java - Spring MVC 服务 DAO 架构

Java字符串到日期的转换问题

java - 如何将 MouseListener 留在 ChildComponent 上,但正确跟踪父组件上的鼠标进入和退出?

Java/ eclipse /hibernate

mysql - 如何在 MySQL 中的分组列中进行搜索? (如果可能,也在 Hibernate 中)

java - 捕获 GenericJDBCException

java - hibernate 二级缓存。集群上的读写或事务缓存并发策略?

java - "In-place"编辑文本首选项

java - 无法初始化类 com.sun.jna.Native

java - 如何通过方法返回一个新号码