Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Lập bản đồ Hibernate - Nối hai bảng với một bảng liên kết - Nhưng có sự thay đổi

Bạn có thể sử dụng chú thích @JoinTable sau @OneToOne để trỏ bảng của thẻ, vì vậy bạn sẽ không cần thực thể cho thẻ, nhưng nếu bảng của thẻ không chỉ là bảng quan hệ, bạn có thể ánh xạ thẻ trong Người dùng là @OneToOne và có phương thức @Transient 'getAddress ()' trả về 'this.card.getAddress ()', nhưng trên thực thể của thẻ, bạn phải ánh xạ mối quan hệ giữa Địa chỉ và Thẻ (@OneToOne (mappedBy ='card_id')) và trong Địa chỉ bạn có thể ánh xạ card_id là @Id.

Giải pháp thay thế đầu tiên

Khách hàng:

@OneToOne
@JoinTable(name="card", joinColumns = @JoinColumn(name="cust_id"),
inverseJoinColumns = @JoinColumn(name="card_id"))
private Address address;

Thay thế thứ hai

Khách hàng:

@OneToOne(mappedBy="cust_id")
private Card card;

...
@Transient
public Address getAddress(){
 return this.card == null ? null : this.card.getAddress();
}

Thẻ:

@OneToOne(mappedBy="card_id")
private Address address;

Địa chỉ:

@Id
private String card_id;

Trong trường hợp thứ hai Thẻ có pk nhúng được tạo thành bởi hai fks (Khách hàng và Địa chỉ)

Thẻ:

@EmbeddedId
private CustomerAddressPK id;

CustomerAddressPK

@Embeddable
public class CustomerAddressPK(){

  private String cust_id;
  private String card_id;
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PLS-00103:Gặp phải biểu tượng CREATE

  2. DBMS OUTPUT PUT không in bất kỳ thứ gì

  3. oracle kết nối bởi nhiều phụ huynh

  4. Xử lý thêm dữ liệu như được trả về trong dbms_output đã cho

  5. Khi nào bạn nên sử dụng các thủ tục được lưu trữ trong java với cơ sở dữ liệu Oracle ... hạn chế là gì?