簡體   English   中英

在Hibernate中更新一對多字段

[英]Updating a One-to-Many Field in Hibernate

假設我有一個單向, one-to-many關系中的PersonOrder實體。

@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更新一個PersonSet<Order>

我需要做類似的事情嗎?

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

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

由於PersonOrder具有OneToMany關系,因此我不確定如何設置Personorders

您可以執行以下操作:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM