我正在研究 Eclipselink 命名查询,并且在为时间戳设置可选参数时遇到问题。
我的要求是如果用户输入该字段,则使用时间戳查询数据。由于该字段是可选的,我正在检查“0000-00-00 00:00:00”或用户输入日期。查询片段如下。但是它不起作用。
DataConstants.java
==================
public static String DATE_CHECKING_FORMAT = "0000-00-00 00:00:00"
Named Query
===========
entityManager.createNamedQuery("Requests.SearchAllData")
.setParameter("fromTime", ((selectionCriteria.getFromRequestTime() == null)? DataConstants.DATE_CHECKING_FORMAT : selectionCriteria.getFromRequestTime()))
.setFirstResult(offset).setMaxResults(limit).getResultList();
@NamedQuery(name = "Requests.SearchAllData",
query = "select ws.requestTimeStamp from StudentBE ws where ((:fromTime = to_timestamp('0000-00-00 00:00:00','dd-mm-yyyy hh24:mi:ss')) or (ws.requestTimeStamp >= :fromTime))),
执行时,我收到此错误。
异常说明:解析查询语法错误 [Requests.SearchAllData: select ws.requestTimeStamp from StudentBE ws where ((:fromTime = to_timestamp('0000-00-00 00:00:00','dd-mm-yyyy hh24:mi :ss')) 或 (ws.requestTimeStamp >= :fromTime)),第 1 行,第 63 列:[=] 处的语法错误。内部异常:MismatchedTokenException(82!=84)
请建议如何使用可选的时间戳字段。
谢谢!!!