2017-11-30 21 views
0

私は奇妙なデータベース設計を実装しようとしていますが、その方法を理解できません。 2つのエンティティの間には、構成された主キーが両方とも存在する多対1の関係があります。外部キーは、他のエンティティのプライマリキーに存在するフィールドとプライマリキーに存在しないフィールドで構成されます。誰かが私を助けてくれることを願います。プライマリキーと非プライマリキーの2つのフィールドで構成される外部キーJPA

@Entity 
    @Table(name = "A") 
    public class A { 

      @EmbeddedId 
      private Aid id; 

      @JoinColumn(name = "FOREIGN_KEY_FIELD2", referencedColumnName = "foreignKeyField2") 
      private B foreignKeyField2; 
    } 

@Embeddable 
    public class Aid{ 

     @JoinColumn(name = "FOREIGN_KEY_FIELD1", referencedColumnName = "foreignKeyField1") 
     private B foreignKeyField1; 

     private String otherField; 
    } 

    @Entity 
    @Table(name = "B") 
    public class B { 

     @EmbeddedId 
     private Bid id; 

     @OneToMany(targetEntity = A.class, fetch = FetchType.LAZY) 
     @JoinColumns({ @JoinColumn(name = "FOREIGN_KEY_FIELD1", referencedColumnName = "foreignKeyField1"), 
       @JoinColumn(name = "FOREIGN_KEY_FIELD2", referencedColumnName = "foreignKeyField2") }) 
     private List<A> as; 

    } 

    @Embeddable 
    public class Bid { 

      private String foreignKeyField1; 

      private String otherField; 

    } 

ありがとうございます。

答えて

0

@EmbeddedIdを使ってこの問題を解決することはできません。IdClassを定義する必要があります。ここで

は一例です:

@Entity @IdClass(PartPK.class) 
public class Part { 
    @Id int partNo; 
    @Id @ManyToOne 
    Supplier supplier; 
}   

public class PartPK { 
    int partNo; 
    int supplier; 
}   
関連する問題