Trong phần ví dụ của @OneToMany
tài liệu tham khảo chú thích JPA :
Ví dụ 1-59 @OneToMany - Lớp khách hàng có Generics
@Entity
public class Customer implements Serializable {
...
@OneToMany(cascade=ALL, mappedBy="customer")
public Set<Order> getOrders() {
return orders;
}
...
}
Ví dụ 1-60 @ManyToOne - Lớp đặt hàng với Generics
@Entity
public class Order implements Serializable {
...
@ManyToOne
@JoinColumn(name="CUST_ID", nullable=false)
public Customer getCustomer() {
return customer;
}
...
}
Dường như với tôi rằng Customer
thực thể là chủ sở hữu của hiệp hội. Tuy nhiên, trong phần giải thích cho mappedBy
thuộc tính trong cùng một tài liệu, nó được viết rằng:
nếu mối quan hệ là hai chiều, thì đặt phần tử mappedBy ở phía nghịch đảo (không sở hữu) của liên kết thành tên của trường hoặc thuộc tính sở hữu mối quan hệ như Ví dụ 1-60 hiển thị.
Tuy nhiên, nếu tôi không sai, có vẻ như trong ví dụ, mappedBy
thực tế được chỉ định ở phía sở hữu của hiệp hội, thay vì phía không sở hữu.
Vì vậy, câu hỏi của tôi về cơ bản là:
Trong một hiệp hội hai chiều (một-nhiều / nhiều-một), chủ thể nào là chủ sở hữu? Làm thế nào chúng ta có thể chỉ định một bên là chủ sở hữu? Làm thế nào chúng ta có thể chỉ định nhiều bên là chủ sở hữu?
"Mặt trái của hiệp hội" nghĩa là gì? Làm thế nào chúng ta có thể chỉ định một bên là nghịch đảo? Làm thế nào chúng ta có thể chỉ định nhiều bên là nghịch đảo?