sql >> データベース >  >> RDS >> Oracle

Hibernateマッピング-2つのテーブルを関連付けテーブルで結合する-しかしひねりを加えて

    @OneToOneの後に注釈@JoinTableを使用してカードのテーブルを指すことができるため、カードのエンティティは必要ありませんが、カードのテーブルが単なるリレーショナルテーブルではない場合は、ユーザーのカードを@OneToOneとしてマップできます。 'this.card.getAddress()'を返す@Transient'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;
    

    2番目の選択肢

    顧客:

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

    2番目のケースでは、カードには2つのfks(顧客と住所)によって形成される埋め込みpkがあります

    カード:

    @EmbeddedId
    private CustomerAddressPK id;
    

    CustomerAddressPK

    @Embeddable
    public class CustomerAddressPK(){
    
      private String cust_id;
      private String card_id;
    }
    


    1. BufferedInputStreamを画像に変換します

    2. MySQLでのINTERVALとCURDATEの操作

    3. 子行を追加または更新できません:外部キー制約が失敗します

    4. 動的外部キーを持つことは可能ですか、そしてそれを行うための最良/正しいものは何ですか?