假设我有Person
和Order
个实体处于单向,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
}
如何使用新的Person
更新Set<Order>
的{{1}}?
我是否需要做以下事情:
Order
由于Order o = new Order();
// ???
person.setOrders(new HashSet<Order>(o));
与Person
的关系OneToMany
,我不确定如何设置Order
的{{1}}。
答案 0 :(得分:1)
您可以这样做:
person1.getOrder()添加(order1);
order1.setPerson(PERSON1);
person1.getOrder()添加(order2);
order2.setPerson(PERSON1);
您可以在循环中使用此多个订单
答案 1 :(得分:1)
我们说我有单向的人和命令实体, 一对多的关系。
但是你的映射表明不然。它与Order类(非反面)的双向关系有责任维护关系。
如果关系是双向的,Order为非反面,则只有在Order中设置person才足以反映数据库中的关系。
order.setPerson(person);
虽然强烈建议您同时设置Orders in Person,以便您的内存中表示与关系的双向性质一致。还建议提供一个&#34;加法器&#34;方法在人而不是&#34;设置&#34;它将关系的两端设置在一个地方。例如,
addOrders(Order order){
this.orders.add(order);
order.setPerson(this);
}
此外,如果您想实际实现单向一对多,您可能需要阅读this讨论。