我有一些模型之间存在依赖关系。以下是模型:
@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;
}
如您所见,名为的模型C
包含多个名为的模型A
和一个名为的模型B
。
我想做的是选择所有C
具有不同模型B
(由它们不同id
)并且具有最大模型date
(更接近当前日期)的模型。另外,我想选择模型的依赖项C
(列表A
和模型B
)。
我有加载所有模型C
及其依赖项的查询:
select distinct c from C c
left join fetch c.modelsA
left join fecth c.modelB
我想我只能用这个查询检索不同的模型C
(由模型的 id 区分B
)及其依赖关系:
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
你能帮助我吗?
下面是一个数据示例:
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
我想检索这个c2
及其c3
依赖项。
谢谢您的帮助