20136


Spring-bootというか、Hibernateの質問になるのでしょうか。  
以下の様なテーブル構成のDBから社員情報を取得したい場合に、社員Classはどのようなアノテーションをつければ良いでしょうか。  
OneToManyを使用すればできそうかと思ったのですが、関連付けする項目が社員テーブルにはないですし、関連付けテーブルではOneToOneにしかなりません。

質問自体がわかりにくい、このような方法では取得できない、そもそもこのような構成がおかしいという等々、細かい点でもご指摘いただけると助かります。

社員テーブル

ID,NAME  
1, TAROU  
2, HANAKO

部署テーブル  
ID,NAME  
1, 部署A  
2, 部署B  
3, 部署C

社員と部署関連付けテーブル（TAROUは部署Aと部署Bに属している。）  
ID,社員ID,部署ID  
1,1,1  
2,1,2  
3,2,2

結果として以下の様なClassで取得したいです。

[code]

    @Entity
    @Table(name = "shain")
    class 社員 {
      @Id
      @GeneratedValue
      private int id;
    
      @Column
      String name;
    
      // ここに何らかのアノテーション等の設定で取得可能かと思っています。
      List<部署> 所属部署;
    }
    
[/code]


CC BY-SA 3.0
2015-12-12T17:01:25.003
19923
2015-12-18T03:04:46.527
13022
question
spring-boot hibernate
Spring-bootで関連付けされているテーブルのデータを一括で取得する方法


この場合、多対多の関連なので@ManyToManyを使います。

[code]

    @Entity
    @Table(name = "shain")
    class 社員 {
    
      @Id @GeneratedValue
      private int id;
    
      @Column
      String name;
    
      @ManyToMany
      @JoinTable(
        name = "社員と部署関連付けテーブルのテーブル名",
        joinColumns = {
          @JoinColumn(name = "社員ID（関連付けテーブルのカラム名）", referencedColumnName = "id（社員テーブルのIDカラム名）")
        },
        inverseJoinColumns = {
          @JoinColumn(name = "部署ID（関連付けテーブルのカラム名）", referencedColumnName = "id（部署テーブルのIDカラム名）")
        }
      )
      private List<部署> 所属部署;
    }
    
[/code]


CC BY-SA 3.0
2015-12-18T03:04:46.527
20136
2015-12-18T03:04:46.527
4739
19923
answer