如何在JPQL中使用LIKE子句?

时间:2014-01-02 06:04:47

标签: java sql jpql

我有一个名为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结尾的所有订单?

先谢谢。

1 个答案:

答案 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);