gpt4 book ai didi

java - Hibernate 插入到 OneToMany

转载 作者:行者123 更新时间:2023-12-01 19:03:48 26 4
gpt4 key购买 nike

我刚刚开始使用 Hibernate,我想知道如何在不先加载容器的情况下将新元素插入到 oneToMany 关系中。

考虑以下示例:

@Entity
@Table(name="orders")
class Order {
@Id @GeneratedId
public Long id;
@OneToMany(mappedBy="order")
public List<Item> items = new ArrayList<Item>();
}

@Entity
@Table(name="items")
class Item {
@Id @GeneratedId
public Long id;
@ManyToOne
public Order order;
}

我想将一个新项目插入到订单中(我知道订单的 ID 并且它是有效的),但我不想先加载订单。显然,这应该是可能的,因为 SQL 仅需要插入的 id,而不需要整个 Order 对象。

最佳答案

您应该能够在 Hibernate 中轻松完成此操作。

Item item - new Item();
Order order = new Order();
order.setId(order_id);
item.setOrder(order);
em.persist(item);

确保您在 Item 实体中的 order 属性上正确设置了级联属性。如果不这样做,您最终可能会无意中更改 Order 中的值。

@ManyToOne(cascade=CascadeType.PERSIST) 

应该没问题。如果订单尚不存在,则仅允许从项目端更改订单。

顺便说一句,您可能需要将这种关系视为多对多(ManyToMany),因为在多个订单上拥有项目是有意义的。

关于java - Hibernate 插入到 OneToMany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11079575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com