我有两个类逆变器和日志,其中逆变器有许多日志(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个逆变器这可能吗?
答案 0 :(得分:2)
您的查询要求所有满足条件的逆变器和日志,而不在它们之间进行任何连接。
并且您不能让逆变器仅加载部分日志列表。实体表示您在数据库中实际拥有的内容,而不是特定查询的结果。
我只想使用em.find()
通过ID获取逆变器,并使用以下查询来获取满足条件的所有日志:
select log from Inverter inverter
inner join inverter.logs log
WHERE inverter.id = :id AND log.timestamp >= :date
我会创建一个包含逆变器及其部分日志列表的对象。