JPA一对多查询

时间:2013-03-24 17:09:15

标签: jpa

我有两个类逆变器日志,其中逆变器有许多日志(1:n)。每个Log都作为时间戳属性。

当我查询变频器时,我通过" Inverter.getLog()"得到所有日志,这很好。

但是,我想创建一个Query,它返回一个Inverter,只是选择了Logs:

select t from Inverter t, Log l WHERE t.id = :id AND l.timestamp >= :date

这给了我一大堆结果,但是我希望使用Logs.timestamp> =:date

得到1个逆变器

这可能吗?

1 个答案:

答案 0 :(得分:2)

您的查询要求所有满足条件的逆变器和日志,而不在它们之间进行任何连接。

并且您不能让逆变器仅加载部分日志列表。实体表示您在数据库中实际拥有的内容,而不是特定查询的结果。

我只想使用em.find()通过ID获取逆变器,并使用以下查询来获取满足条件的所有日志:

select log from Inverter inverter 
inner join inverter.logs log 
WHERE inverter.id = :id AND log.timestamp >= :date

我会创建一个包含逆变器及其部分日志列表的对象。