gpt4 book ai didi

java - 在 Hibernate 中更新一对多字段

转载 作者:行者123 更新时间:2023-12-02 05:39:38 27 4
gpt4 key购买 nike

假设我有 PersonOrder单向实体,one-to-many关系。

@Entity
public class Person {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@OneToMany(mappedBy = "person")
Set<Order> orders = new HashSet<Order>();

// other fields, constructor, setters and getters

}

订单

@Entity
public class Order {

@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column(name = "id")
Person person;

// other fields, constructor, setters and getters
}

如何更新 PersonSet<Order>与新Order的?

我需要做这样的事情吗:

Order o = new Order();
// ???

person.setOrders(new HashSet<Order>(o));

Person有一个OneToManyOrder的关系的,我不知道如何设置Personorders .

最佳答案

Let's say I have Person and Order entities in a uni-directional, one-to-many relationship.

但是您的映射表明情况并非如此。它与 Order 类(非相反方)是双向关系,负责维护该关系。

如果关系是双向的,以 Order 作为非逆边,则只需在 Order 中设置 person 就足以反射(reflect)数据库中的关系。

order.setPerson(person);

尽管强烈建议您也亲自设置订单,以便内存中的表示与关系的双向性质一致。还建议在 Person 中提供一种“adder”方法,而不是“set”方法,后者将关系的两端设置在一处。例如,

addOrders(Order order){
this.orders.add(order);
order.setPerson(this);
}

此外,如果您想实际实现单向一对多,您可能需要阅读 this讨论。

关于java - 在 Hibernate 中更新一对多字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24615579/

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