我有一些模型之间存在依赖关系。以下是模型:
@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依赖项。
谢谢您的帮助