sql >> Database >  >> RDS >> Oracle

Hibernate Mapping - Twee tabellen samenvoegen met een associatietabel - Maar met een twist

Je zou de annotatie @JoinTable na de @OneToOne kunnen gebruiken om naar de tafel van de kaart te wijzen, dus je hebt geen entiteit nodig voor de kaart, maar als de tafel van de kaart niet alleen een relationele tafel is, kun je de kaart in Gebruiker toewijzen als @OneToOne en een @Transient 'getAddress()'-methode hebben die 'this.card.getAddress()' retourneert, maar op de entiteit van de kaart moet u de relatie tussen Address en Card(@OneToOne(mappedBy='card_id')), en in Adres dat u card_id zou kunnen toewijzen als @Id.

Eerste alternatief

Klant:

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

Tweede alternatief

Klant:

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

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

Kaart:

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

Adres:

@Id
private String card_id;

In het tweede geval heeft Card een Embedded pk die wordt gevormd door twee fks (klant en adres)

Kaart:

@EmbeddedId
private CustomerAddressPK id;

CustomerAddressPK

@Embeddable
public class CustomerAddressPK(){

  private String cust_id;
  private String card_id;
}


  1. MySQL-Linux-fout bij poging om de service te stoppen

  2. Hoe ontbrekende gegevens voor meerdere groeperingen binnen de tijdspanne op te nemen?

  3. Django DB-niveau standaardwaarde voor een kolom

  4. Kan Count(*) ooit null retourneren?