我有一个名为orders的表,我的目的是获取所有以2012结尾的订单。我的日期是VARCHAR,我正在使用MY-SQL数据库。在一个班级中,我运行以下JPQL
查询,我得到了
Syntax error parsing the query [select object(o) from Orders as o WHERE o.orderDate LIKE %2012], line 1, column 58: unexpected char [%].
我试过这个,
public List<Orders> getOrdersInCurrentYear(String def) {
EntityManager em = getEntityManager();
try {
Query q = em.createQuery("select object(o) from Orders as o WHERE o.orderDate LIKE :def");
q.setParameter("def", "%" + def);
return q.getResultList();
} finally {
em.close();
}
}
如何使用此方法获取以2012结尾的所有订单?
先谢谢。
答案 0 :(得分:0)
您不能将LIKE
运算符用于DATE
AND DATETIME
数据类型。
日期,月份,年份等都有一些功能。大多数Persistence Provider
支持。
FUNC('MONTH', date)
FUNC('YEAR', date)
eclipselink
select object(o) from Orders as o WHERE FUNC('YEAR', o.orderDate) = :def
参数
q.setParameter("def", def);