首页 > 解决方案 > 如何从两个实体中删除 OneToMany 关系?

问题描述

我在两个不同的类 X 和 Y 中有相同的 OneToMany 关系,当我试图删除它时,出现了一个例外:javax.persistence.EntityNotFoundException: Unable to find with id... <entity>

我还有一个 XY 类,它有两个 ManyToOne 关系,它嵌入了由 X 的 id 和 Y 类的 id 组成的 id。

我尝试过从 X 和 Y 类的列表中删除关系,合并它,然后从 XY 类中删除关系。我试过用 NotFoundAction.IGNORE 添加注释 @NotFound 并且它有效,但我不能使用它。另外我认为这并不能解决我的问题,这类似于解决方法。

//from X class:
    @OneToMany(fetch = FetchType.EAGER, mappedBy = "x", cascade = CascadeType.ALL, orphanRemoval = true)
    @Fetch(FetchMode.SUBSELECT)
    private List<XY> xy;

//from Y class:
    @OneToMany(fetch = FetchType.EAGER, mappedBy = "y", cascade = CascadeType.ALL, orphanRemoval = true)
    @Fetch(FetchMode.SUBSELECT)
    private List<XY> xy;

//from XY class:
    @EmbeddedId
    private XYid xyid = new XYid();

    @MapsId("xId")
    @ManyToOne(optional = false)
    @JoinColumn(name = "x")
    private X x;

    @MapsId("yId")
    @ManyToOne(optional = false)
    @JoinColumn(name = "y")
    private Y y;

//from XYid class:
    private Integer xId;
    private Integer yId;

标签: javasqlhibernatejpajakarta-ee

解决方案


推荐阅读