그들 사이의 종속성이있는 일부 모델이 있습니다. 여기 모델은 다음과 같습니다 당신이 C
라는 이름의 모델을 볼 수 있듯이Hibernate와 JPA로 그룹화하고 결합하십시오.
@Entity
public class A extends Model {
@Required
public String name;
@Required
@ManyToOne(fetch = FetchType.LAZY)
public C modelC;
}
@Entity
public class B extends Model {
@Required
public String name;
}
@Entity
public class C extends Model {
@Required
public Date lastUpdate;
@Required
@OneToMany(mappedBy = "modelC", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
public List<A> modelsA;
@Required
@ManyToOne(fetch = FetchType.LAZY)
public B modelB;
}
이 A
및 B
라는 이름의 하나 개의 모델이라는 여러 모델이 포함되어 있습니다. 내가하고 싶은 무엇
는 모두 (자신의 id
에 의해 구별되는) 별개의 모델 B
있는 모델 C
하고를 선택하는 가장 큰 date
(현재 날짜에 가까운). 또한 모델 C
(A
및 모델 B
목록)의 종속성을 선택하고 싶습니다. 나는이 쿼리와 종속 C
(모델 B
의 ID로 구별)만을 별개의 모델을 검색 할 수 있습니다 생각
select distinct c from C c
left join fetch c.modelsA
left join fecth c.modelB
:
나는 모든 모델 C
와 종속성을로드하는 쿼리를 :
select distinct c from C c
left join fetch c.modelsA
left join fetch c.modelB b
group by b.id
그러나 어떻게 고유 한 모델 C
을 가장 빠른 날짜로 검색 할 수 있습니까? 작동하지 않음 :
select distinct c, max(c.lastUpdate) as maxUpdate from C c
left join fetch c.modelsA
left join fetch c.modelB b
group by b.id
도와 주시겠습니까? 나는이 c2
및 c3
과 종속성을 검색하고 싶은
B(b1):
name: First model of type B
B(b2):
name: Second model of type B
C(c1):
lastUpdate: 100
modelB: b1
C(c2):
lastUpdate: 200
modelB: b2
C(c3):
lastUpdate: 300
modelB: b1
A(a1):
name: A1
modelC: c1
A(a2):
name: A2
modelC: c1
A(a3):
name: A3
modelC: c2
A(a4):
name: A4
modelC: c3
: 여기
데이터의 예입니다. 는 가져 활용을 위해 becareful, 너무 HQL과 또한, 당신의 도움이