我有两个数据库列,其中一个是Timestamp
类型,另一个是Number
持有#分钟。我有一个要求,我需要添加两列,即添加分钟到时间戳值,并将其与一个也是Timestamp
的参数进行比较。以下是当前失败的NamedQuery
。
任何指针都会非常感激。我想使用Named Query
而不是Native
来实现此目的。
@NamedQuery(name = "Company.findAllProducts", query = "SELECT p FROM Product p JOIN FETCH p.productDetail pd WHERE (pd.createTimestamp + pd.minutesToActive) > :incomingTimestamp")
异常堆栈跟踪:
Parameter value [2015-05-20T14:52:08.764Z] did not match expected type [java.lang.Integer (n/a)]
java.lang.IllegalArgumentException: Parameter value [2015-05-20T14:52:08.764Z] did not match expected type [java.lang.Integer (n/a)]
at org.hibernate.ejb.AbstractQueryImpl.validateBinding(AbstractQueryImpl.java:382) ~[hibernate-entitymanager-4.2.18.Final-redhat-2.jar!/:4.2.18.Final-redhat-2]
at org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding(AbstractQueryImpl.java:356) ~[hibernate-entitymanager-4.2.18.Final-redhat-2.jar!/:4.2.18.Final-redhat-2]
at org.hibernate.ejb.AbstractQueryImpl.registerParameterBinding(AbstractQueryImpl.java:347) ~[hibernate-entitymanager-4.2.18.Final-redhat-2.jar!/:4.2.18.Final-redhat-2]
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:373) ~[hibernate-entitymanager-4.2.18.Final-redhat-2.jar!/:4.2.18.Final-redhat-2]
at org.hibernate.ejb.QueryImpl.setParameter(QueryImpl.java:74) ~[hibernate-entitymanager-4.2.18.Final-redhat-2.jar!/:4.2.18.Final-redhat-2]
答案 0 :(得分:0)
看起来NamedQuery
无法使用Timestamp
添加Integer
值。
请检查您是否可以更改' Number
' (分钟偏移字段),也是Timestamp
字段。否则,您可以在查询之外进行添加。
请您提供更多详情,例如' 2015-05-20T14:52:08.764Z'这个值来自pd.createTimestamp?另外,您是否尝试直接在数据库中运行此SQL,是否有效?