【问题标题】:Translate MySQL to JPA将 MySQL 转换为 JPA
【发布时间】: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

iddate 是主键。它们由 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


    【解决方案1】:

    好的,否则我做到了:

    SELECT s.id, s.startDate, s.endDate
    FROM EntityS s
    WHERE ...
    AND s.date = (
        SELECT MAX(s.date)
        FROM EntityS s2
        WHERE s2.id = s.id
        AND s2.startDate = s.startDate
        AND ...
    )
    GROUP BY s.id, s.startDate
    

    【讨论】:

      猜你喜欢
      • 2018-03-13
      • 1970-01-01
      • 2012-09-28
      • 2011-06-17
      • 1970-01-01
      • 2019-01-13
      • 2020-10-03
      • 2020-01-30
      • 2012-11-12
      相关资源
      最近更新 更多