sql >> Database teknologi >  >> RDS >> Oracle

Hibernate Mapping - Sammenføjning af to borde med et associationsbord - Men med et twist

Du kan bruge annotationen @JoinTable efter @OneToOne til at pege på kortets bord, så du behøver ikke en enhed for kort, men hvis kortets tabel ikke kun er en relationstabel, kan du kortlægge kortet i User som @OneToOne og har en @Transient 'getAddress()'-metode, der returnerer 'this.card.getAddress()', men på kortets entitet skal du kortlægge relationen mellem Address og Card(@OneToOne(mappedBy='card_id')), og i Adresse, du kunne kortlægge card_id som @Id.

Første alternativ

Kunde:

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

Andet alternativ

Kunde:

@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;

Adresse:

@Id
private String card_id;

I det andet tilfælde har kortet en indlejret pk, som er dannet af to fks (kunde og adresse)

Kort:

@EmbeddedId
private CustomerAddressPK id;

KundeadressePK

@Embeddable
public class CustomerAddressPK(){

  private String cust_id;
  private String card_id;
}


  1. Hvorfor \G i SELECT * FROM tabelnavn\G?

  2. Hvordan reparerer man et beskadiget MPTT-træ (indlejret sæt) i databasen ved hjælp af SQL?

  3. Giver MySQL-brugere kun de mindste privilegier

  4. For at ændre kolonnedatatype fra clob til xmltype