jag*_*ter 15 java orm jpa jpql
如何MONTH像使用sql查询一样使用函数编写JPA 查询?
@NamedQuery(name="querybymonth", query="select t from table1 t where MONTH(c_Date) = 5")
Run Code Online (Sandbox Code Playgroud)
当我使用上面的模式进行查询时,我收到一个错误:unexpected token - MONTH.
Jam*_*mes 23
如果您使用的是EclipseLink(2.1),则可以使用FUNC()函数调用JPA JPQL规范中未定义的任何数据库函数.
即FUNC('MONTH',c_Date)
在JPA 2.1(EclipseLink 2.5)中,FUNCTION语法成为规范的一部分(并替换了EclipseLink特定的FUNC).
如果您使用的是TopLink Essentials,则无法在JPQL中执行此操作,但可以为其定义TopLink Expression查询(类似于JPA 2.0条件),或使用本机SQL.
此外,如果您使用任何JPA 2.0提供程序并使用Criteria查询,则可以使用function()API来定义它.
我想查询YEAR(itemDate),但函数没有退出,然后我看到了SUBSTRING()函数,所以我做了什么Select q from table where SUBSTRING(itemDate, 1, 4)='2011'
,它对我有用
!希望能帮助到你!
如果你需要一个动态变量,你也可以这样做.这里:poDate是在setParameter()中确定的年份;
@NamedQuery(name = "PurchaseOrders.findByYear", query = "SELECT p FROM PurchaseOrders p WHERE SUBSTRING(p.poDate, 1, 4) = :poDate")
Query q = em.createNamedQuery("PurchaseOrders.findByYear");
q.setParameter("poDate", s_year+"");
Run Code Online (Sandbox Code Playgroud)
但如果你对你的解决方案没问题,那就没事了.我只是发现JPA执行得更快.
| 归档时间: |
|
| 查看次数: |
43256 次 |
| 最近记录: |