微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JPA双向关联:ManyToOne删除父级时如何删除关联?

如何解决JPA双向关联:ManyToOne删除父级时如何删除关联?

我有两个实体:ProductCategory

  public class Category {
    @Id
    @GeneratedValue(generator = "inc")
    @GenericGenerator(name = "inc",strategy = "increment")
    private int id;

    @OnetoMany(cascade =  CascadeType.PERSIST,mappedBy = "category")
    private Set<Product> products;
}

public class Product {
    @Id
    @GeneratedValue(generator = "inc")
    @GenericGenerator(name = "inc",strategy = "increment")
    private int id;

    @ManyToOne
    @JoinColumn(name = "categories_id")
    private Category category;
}

我想在删除父级(类别)后将我的孩子(产品)保留在 db 中(category 的值等于 null)。 目前,当我尝试删除类别时,出现此错误

org.h2.jdbc.JdbcsqlIntegrityConstraintViolationException: referential integrity constraint violation: "CONSTRAINT_F2: PUBLIC.PRODUCTS FOREIGN KEY(CATEGORIES_ID) REFERENCES PUBLIC.CATEGORIES(ID)

解决方法

在删除类别之前,您需要更新关联。 例如:

Category category = ...
for (Product p : category.getProducts()) {
   p.setCategory(null);
}
category.getProducts().clear();
entityManager.remove(category);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。