[英]Updating a One-to-Many Field in Hibernate
假設我有一個單向, one-to-many
關系中的Person
和Order
實體。
人
@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
}
如何用新的Order
更新一個Person
的Set<Order>
?
我需要做類似的事情嗎?
Order o = new Order();
// ???
person.setOrders(new HashSet<Order>(o));
由於Person
與Order
具有OneToMany
關系,因此我不確定如何設置Person
的orders
。
您可以執行以下操作:
person1.getOrder()。add(order1);
order1.setPerson(person1);
person1.getOrder()。add(order2);
order2.setPerson(person1);
您可以在多個訂單中循環使用
假設我有一個單向,一對多關系中的Person和Order實體。
但是您的映射建議相反。 它與Order類(非反面)具有雙向關系,負責維護該關系。
如果關系是雙向的,而Order是非相反的,則僅在Order中設置人就足以在數據庫中反映該關系。
order.setPerson(person);
盡管強烈建議您同時設置“親自下單”,以使您的內存中表示與關系的雙向性質一致。 還建議在Person中提供一種“ adder”方法,而不是在一個位置設置關系兩端的“ set”方法。 例如
addOrders(Order order){
this.orders.add(order);
order.setPerson(this);
}
同樣,如果您想實際實現一對多的單向,則可能需要閱讀此討論。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.