0

我有两个类InverterLog,其中 Inverter 有很多 Logs (1:n)。每个日志作为一个时间戳属性。

当我查询逆变器时,我通过“Inverter.getLog()”获取所有日志,这很好。

但是,我想创建一个返回逆变器的查询,只使用选定的日志:

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

这给了我一大堆结果,但是我想用 Logs.timestamp >= :date 得到 1 Inverter

这可能吗?

4

1 回答 1

2

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

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

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

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

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

于 2013-03-24T17:20:20.953 回答