【发布时间】:2013-07-01 22:32:56
【问题描述】:
我正在处理 Eclipselink 命名查询,但在为时间戳设置可选参数时遇到问题。
如果字段是由用户输入的,我的要求是查询带有时间戳的数据。由于该字段是可选的,我正在检查“0000-00-00 00:00:00”或用户输入日期。查询 sn-p 如下。但是它不起作用。
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)
请建议如何使用可选的时间戳字段。
谢谢!!!
【问题讨论】:
标签: timestamp eclipselink named-query