2009-08-03 10 views
0

3つのPKカラムを使用して結合全体で@ManyToManyマッピングを使用できますか?3つのIDフィールドを使用してManyToManyを結合/リンクテーブルにマッピングする

私はこれが不可能であると解決策は、私が過去に行ってきた@OneToManyを使用してエンティティを公開することですが、このフィールドは単に私は多分そこに私を保存するためにいくつかの巧妙なマッピングを考えPKであるため、かなり確信していますこの作品。ここに私の '参加' 実体の抜粋ですChssPly

に応じてJamesC

アップデート -

は希望に満ちについて。

@SuppressWarnings("serial") 
    @Embeddable 
    public static class Id implements Serializable { 

     @Column(name = StringPool.Column.APPLICATION_ID) 
     private Long applicationId; 

     @Column(name = StringPool.Column.ARTICLECATEGORY_ID) 
     private Long articleCategoryId; 

     @Column(name = StringPool.Column.USER_ID) 
     private Long userId; 

     public Id() {} 

     public Id(Long applicationId, Long articleCategoryId, Long userId) { 
      this.applicationId = applicationId; 
      this.articleCategoryId = articleCategoryId; 
      this.userId = userId; 
     } 

     public boolean equals(Object o) { 
      if (o instanceof Id) { 
       Id that = (Id)o; 
       return this.applicationId.equals(that.applicationId) && 
         this.articleCategoryId.equals(that.articleCategoryId) && 
         this.userId.equals(that.userId); 
      } else { 
       return false; 
      } 
     } 

     public int hashCode() { 
      return applicationId.hashCode() + articleCategoryId.hashCode() + userId.hashCode(); 
     } 
    } 

答えて

3

「3 PK列」の意味によって異なります。リンクしているエンティティの1つに複合キーがありますか?

@Entity 
public class MyEntity { 
@ManyToMany(targetEntity=MyOtherEntity.class) 
@JoinTable(name="MY_JOIN_TABLE", 
    [email protected](name="ENTITY_ID"), 
    inverseJoinColumns={@JoinColumn(name="OTHER_ID1"), @JoinColumn(name="OTHER_ID2")}) 
    public Collection getOthers() { 
     return employees; 
    } 
} 

これが意味するものでない場合は、質問を明確にしてください。

+0

は基本的に同じことを提案しようとしていた –

+0

ありがとうございました。残念ですが、これをOneToManyの設定にリファクタリングしましたが、次回にはわかります。ありがとうございました。 – JamesC

関連する問題