2

我想做SELECT e FROM Pedidos e WHERE e.diaPedido = :diaPedido AND e.horaPedido = :horaPedido
当我编写参数时使用query.setParameter("diaPedido", fechaEscogida, TemporalTipe.DATE)query.setParameter("horaPedido", horaEscogida, TemporalTipe.TIME)但我不知道为什么第二个过滤器Temporal.TIME不起作用,因为仍然比较像TIMESTAMP
我使用eclipseLink 2.3.0javax.persistence 2.0.1
diaPedidohoraPedido都是 oracle 数据库中的日期。

4

1 回答 1

3

如果您只想比较 TIMESTAMP 列的时间部分,则需要使用数据库函数。

在 EclipseLink (>=2.4) 中,您可以使用 EXTRACT 或 CAST,或 FUNCTION/FUNC 运算符来调用数据库函数。

见, http://java-persistence-performance.blogspot.com/2012/05/jpql-vs-sql-have-both-with-eclipselink.html

于 2013-07-15T14:53:07.040 回答