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 매핑 엔티티가 있습니까? 그것은 쓸데없고 (many-to-many 연관을 위해 사용 된 조인 테이블과 같은 테이블에 매핑되기 때문에 문제가있다.) 그것은 말했다 : anythig 시도 했습니까. JPQL의 문서를 읽었습니까? –
@MaciejKowalski 나는 Bentities를 얻기 위해 CrudRepository를 확장하는 AEntityRepository에서 이와 같은 것을 시도했지만 Bentity에서 CEntity를 얻는 방법을 확신하지 못했습니다. 목록 findBEntitiesByAEntityId (긴 ID); –
jusermar10