您好我想尝试运行此查询
UPDATE WarmTimeMonitoring wtm
SET wtm.warmTime = (EXTRACT(HOUR FROM CURRENT_TIMESTAMP - wtm.entryDate)*60)+ EXTRACT(MINUTE FROM CURRENT_TIMESTAMP - wtm.entryDate )
WHERE wtm.leavingDate IS NULL
当我在数据库上尝试查询时,它可以正常工作
UPDATE WARMTIME_MONITORING w
SET w.WARM_TIME = (EXTRACT(HOUR FROM CURRENT_TIMESTAMP - w.ENTRY_DATE)*60)+ EXTRACT(MINUTE FROM CURRENT_TIMESTAMP - w.ENTRY_DATE)
WHERE LEAVING_DATE IS NULL;
如果我使用JPQL尝试它,我会收到以下错误:
执行数据库查询时发生异常: IllegalArgumentException->创建时发生异常 EntityManager中的查询:异常描述:语法错误解析 [UPDATE WarmTimeMonitoring wtm SET wtm.warmTime =(EXTRACT(HOUR FROM) CURRENT_TIMESTAMP - wtm.entryDate)* 60)+ EXTRACT(MINUTE FROM CURRENT_TIMESTAMP - wtm.entryDate)WHERE wtm.leavingDate IS NULL]。 [68,85]左表达式不是算术表达式。 [131 [148]左表达式不是算术表达式。
有人可以解释一下为什么会发生这种情况以及我如何解决这个问题?
是的,我检查了warmTime entryDate和leavingDate是否可以调用。
答案 0 :(得分:0)
正如@neil stockon所说,一些函数是无效的JPQL操作,我建议,首先去记录并获取制作和更新所需的信息
SELECT w.ID, w.ENTRY_DATE from WARMTIME_MONITORING w
WHERE LEAVING_DATE IS NULL;
获得记录的id并且entry_date执行日期所需的操作,以符合新日期并执行JPQL更新
UPDATE WARMTIME_MONITORING w
SET w.WARM_TIME = :time
WHERE ID = :id
如果您有大量数据,这可能效率很低。