Oracle
 sql >> база данни >  >> RDS >> Oracle

Hibernate Mapping - Свързване на две таблици с асоциативна таблица - Но с обрат

Можете да използвате анотацията @JoinTable след @OneToOne, за да посочите таблицата на картата, така че няма да имате нужда от обект за карта, но ако таблицата на картата не е просто релационна таблица, можете да картографирате картата в User като @OneToOne и имат @Transient 'getAddress()' метод, който връща 'this.card.getAddress()', но в обекта на картата трябва да картографирате връзката между Address и Card(@OneToOne(mappedBy='card_id')), и в Адрес, на който можете да картографирате card_id като @Id.

Първа алтернатива

Клиент:

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

Втора алтернатива

Клиент:

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

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

Карта:

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

Адрес:

@Id
private String card_id;

Във втория случай картата има вграден pk, който се формира от два fks (клиент и адрес)

Карта:

@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. Премахнете обръщане на двойки с помощта на SQL

  2. Как да регистрирате Pluggable Database(PDB) с нов създаден LISTENER

  3. ORA 00918 - Грешка в нееднозначно дефинирана колона

  4. Използване на чисти TNSNAMES, а не базирани на хост връзки към бази данни в Oracle JDeveloper

  5. Сравняване на стойности, разделени със запетая, от две колони на две различни таблици