前提・実現したいこと
2つのEntityを「@ManyToMany」の関連を持たせたい。
それぞれ、「type」というフィールドを持つ。
この「type」を関連付けさせたいです。
コンソールの結果を見るに、
「on sansho0_.btn_id=kmks1_.sanshos_btn_id 」が余計です。
#####「sansho0_.type=kmks1_.sanshos_type」だけでJOINしたいのです。
正しい記載方法をご教示お願い致します。
##コンソール内容
select
distinct sansho0_.btn_id as btn_id1_2_,
sansho0_.type as type2_2_
from
sansho sansho0_
inner join
kmk kmks1_
on sansho0_.btn_id=kmks1_.sanshos_btn_id
and sansho0_.type=kmks1_.sanshos_type
Entityクラス
・Sansho.java
・Kmk.java
該当のソースコード
java
1 2@Entity 3public class Sansho implements Serializable { 4 5 6 //複合主キー 7 @EmbeddedId 8 SanshoComposite sanshoComposite; 9 10 public Sansho(String btn_id, String type) { 11 sanshoComposite = new SanshoComposite(); 12 sanshoComposite.setBtn_id(btn_id); 13 sanshoComposite.setType(type); 14 } 15 16 public Sansho() {} 17 18 19 @ManyToMany(mappedBy = "sanshos") 20 private List<Kmk> kmks; 21 22getter,settr省略
java
1@Entity 2public class Kmk implements Serializable { 3 4 //複合主キー 5 @EmbeddedId 6 KmkComposite kmkComposite; 7 8 private String type; 9 10 11 public Kmk(String sbt,String kmk, String type) { 12 kmkComposite = new KmkComposite(); 13 kmkComposite.setSbt(sbt); 14 kmkComposite.setKmk(kmk); 15 this.type= type; 16 } 17 18 public Kmk() {} 19 20 @ManyToMany 21 @JoinColumn(name = "type", insertable = false, updatable = false) 22 private List<Sansho> sanshos; 23 24getter,settr省略
##複合主キークラス
java
1@Embeddable 2public class SanshoComposite implements Serializable { 3 4 //部店コード 5 private String btn_id; 6 //種類 7 private String type; 8 9 public SanshoComposite(String btn_id, String type) { 10 this.btn_id = btn_id; 11 this.type= type; 12 } 13 14 public SanshoComposite() {} 15
java
1@Embeddable 2public class KmkComposite implements Serializable { 3 4 //種別 5 private String sbt; 6 //科目 7 private String kmk; 8 9 public KmkComposite(String sbt, String kmk) { 10 this.sbt = sbt; 11 this.kmk = kmk; 12 } 13 14 public KmkComposite() {} 15
#Repositoryクラス
java
1@Repository 2public interface SanshoRepository extends JpaRepository<Sansho, String> { 3 4 @Query("SELECT DISTINCT s FROM Sansho s INNER JOIN s.kmks ") 5 List<Sansho> findGet(); 6} 7
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/03 10:54