1
私は以下のようなエンティティを持っています。私はAEntityのIDを使用してCEntityからCIDのリストを取得する必要があります。春のデータJPA多数取得多数
私はAEntity - > ABMapping - > BEntity - > CEntityからCIDを取得する必要があります。
JPAでこれを達成する方法はありますか、4つのテーブルをすべて結合してネイティブクエリの方法でCEntityからCIDを取得する必要がありますか?
エンティティA
@Entity
public class AEntity {
@Id
private long id;
@ManyToMany
@JoinTable(name = "ABMapping", joinColumns = @JoinColumn(name = "AEntity_ref", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "BEntity_ref", referencedColumnName = "id"))
private List<BEntity> bEntities = new ArrayList<>();
}
エンティティB
@Entity
public class BEntity {
@Id
private long id;
private CEntity cEntity;
@ManyToMany(mappedBy = "bEntities")
private List<AEntity> aEntities;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "cEntityId")
public CEntity getCEntity() {
return cEntity;
}
}
エンティティABMapping
@Entity
public class ABMapping {
@Id
private long id;
@Column(name="AEntity_ref")
private long ARefId;
@Column(name = "BEntity_ref")
private long BRefId;
}
エンティティC
@Entity
public class CEntity {
@Id
private long id;
private String CID;
private List<BEntity> bEntity;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "c", cascade =
CascadeType.ALL)
public List<BEntity> getBEntities() {
return bEntity;
}
@Column(name = "CID_column")
public String getCId() {
return CID;
}
public void setCId(String CID) {
this.CID = CID;
}
}
何を試しましたか? jpa経由で可能です –
なぜABマッピングエンティティをお持ちですか?それは役に立たず(多対多の関連付けに使用される結合テーブルと同じテーブルにマップされるので問題があります)。それは言った:anythigを試してみましたか? JPQLのドキュメントを読んだことはありますか? –
@MaciejKowalski私はBentitiesを取得するためにCrudRepositoryを拡張するAEntityRepositoryでこれを試しましたが、BentityからCEntityを取得する方法は不明です。リスト findBEntitiesByAEntityId(long Id); –
jusermar10