sql >> Databasteknik >  >> RDS >> Oracle

Hibernate Mapping - Sammanfoga två bord med ett associationsbord - Men med en twist

Du kan använda anteckningen @JoinTable efter @OneToOne för att peka på kortets bord, så du behöver inte en enhet för kort, men om kortets bord inte bara är en relationstabell kan du mappa kortet i User som @OneToOne och har en @Transient 'getAddress()'-metod som returnerar 'this.card.getAddress()', men på kortets enhet måste du mappa relationen mellan Address och Card(@OneToOne(mappedBy='card_id')), och i Adress som du kan mappa card_id som @Id.

Första alternativet

Kund:

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

Andra alternativet

Kund:

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

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

Kort:

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

Adress:

@Id
private String card_id;

I det andra fallet har kortet en inbäddad pk som bildas av två fks (kund och adress)

Kort:

@EmbeddedId
private CustomerAddressPK id;

CustomerAddressPK

@Embeddable
public class CustomerAddressPK(){

  private String cust_id;
  private String card_id;
}


  1. Ta bort efterföljande nollor i decimalvärdet med ändrad längd

  2. Hur löser jag InnoDB:Kan inte låsa ./ibdata1 mysql-fel?

  3. Skapa en användardefinierad funktion som fungerar med GROUP BY i mysql

  4. PHP MySql (1045) Åtkomst nekad för användare