【发布时间】:2014-01-22 09:58:21
【问题描述】:
我正在尝试将 MySQL 查询转换为 JPA。
我正在使用 MySQL5 和 EclipseLink 2.4.2。
这是 MySQL 查询:
SELECT s.id, s.startDate, CAST(GROUP_CONCAT(DISTINCT s.endDate ORDER BY s.date DESC) AS DATE) endDate
FROM table_s s
WHERE ...
GROUP BY s.id, s.startDate
id 和 date 是主键。它们由 JPA 中的可嵌入 id 表示,并且字段在实体中也是可读的(可插入/可更新 = false)。
这是 JPA 查询:
SELECT s.id, s.startDate, SQL('CAST(GROUP_CONCAT(DISTINCT ? ORDER BY ? DESC) AS DATE)', s.endDate, s.date) AS endDate
FROM EntityS s
WHERE ...
GROUP BY s.id, s.startDate
目前的问题是生成的sql查询不包含s.startDate,原因我不知道。
如果我只是将代码更改为SELECT s.id, s.startDate, s.endDate,它就可以工作了……但我真的需要得到最后一个endDate。
我试过MAX(s.endDate),但实际上它并没有给出最后一个值(即使它当前有效,它也不正确,可能会发送错误的结果)
如果有人有想法或解决方案,我会很高兴。
【问题讨论】:
标签: java mysql jpa eclipselink