【问题标题】:How to delete entity with many to many relation? JPA如何删除具有多对多关系的实体? JPA
【发布时间】:2023-03-05 14:06:01
【问题描述】:

我不知道如何删除它。只有一件事我注意到,在删除名为“OrderToProvider-Goods”的表中的所有实体后,OrderToProvider 将被删除。

代码:

OrderToProvider

public class OrderToProvider {
@GeneratedValue (strategy = GenerationType.IDENTITY)
@Id
private int id;
@Basic
private int price;
@Basic
private Date dataOfOrder;
@Basic
private Date dateOfProcessing;
@ManyToOne(optional = false)
private main.data.Provider provider;
@ManyToMany (cascade = CascadeType.ALL)
private Collection<Good> goods;

public class Good implements Comparable<Good>{
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    @Id
    private int id;
    @Basic
    private String name;
    @Basic
    private String model;
    @Basic
    private int price;
    @Basic
    private String type;
    @Basic
    private int amount;
    @ManyToOne(optional = false)
    private Provider provider;

【问题讨论】:

    标签: java mysql database jpa


    【解决方案1】:

    要从数据库中删除OrderToProvider,首先从数据库中检索它,然后setGoods(null)setProvider(null),然后再将其删除。这应该适用于您已正确实施 setters 的条件。

    我希望这会有所帮助。

    【讨论】:

    • 非常感谢!我可以再问一个问题吗?但这将是一个非常愚蠢的问题。如何在商品中添加实体(OrderToProvider)但不在数据库中添加这些商品?这就像我可以看到订单中的商品,但它们不应该在数据库中。
    • 我真的不知道你想在这里实现什么,但是如果你打算做的是保存订单而不保存货物,但你想用一些货物检索订单,我不确定这是可以实现的。我建议您研究数据持久化的工作原理。如果你的意思是别的,我建议你更好地解释你想要做什么,如果可能的话提供一个场景。
    • 好的,我试试。我从供应商那里订购了商品,我必须将其添加到数据库中。但是我还没有这些货。当有货物的订单来找我时,在这之后我可以在数据库中添加货物,因为我有它。我知道这很奇怪:)
    • 您可以在保存订单前将商品设置为emptyList()。尝试这样做。
    猜你喜欢
    • 2021-08-08
    • 1970-01-01
    • 2013-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    相关资源
    最近更新 更多