Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JPQL中使用LIKE子句?_Java_Sql_Jpql - Fatal编程技术网

Java 如何在JPQL中使用LIKE子句?

Java 如何在JPQL中使用LIKE子句?,java,sql,jpql,Java,Sql,Jpql,我有一个名为orders的表,我的目的是获取2012年结束的所有订单。我的约会对象是VARCHAR,我正在使用My-SQL数据库。在一个类中,我运行以下JPQL查询,得到 解析查询时出现语法错误[将订单中的对象(o)选择为o,其中o.orderDate类似于%2012],第1行第58列:意外字符[%]。 我试过这个 public List<Orders> getOrdersInCurrentYear(String def) { EntityManager em = getEn

我有一个名为orders的表,我的目的是获取2012年结束的所有订单。我的约会对象是VARCHAR,我正在使用My-SQL数据库。在一个类中,我运行以下
JPQL
查询,得到

解析查询时出现语法错误[将订单中的对象(o)选择为o,其中o.orderDate类似于%2012],第1行第58列:意外字符[%]。

我试过这个

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();
    }
}
公共列表getOrdersInCurrentYear(字符串定义){
EntityManager em=getEntityManager();
试一试{
Query q=em.createQuery(“从订单中选择对象(o)作为o,其中o.orderDate类似于:def”);
q、 设置参数(“def”、“%”+def);
返回q.getResultList();
}最后{
em.close();
}
}
如何使用此方法获取2012年底的所有订单


提前感谢。

您不能对
日期
日期时间
数据类型使用
LIKE
运算符

有一些用于日期、月份、年份等的函数。大多数
持久性提供程序都受支持

FUNC('MONTH', date)
FUNC('YEAR', date)
对于日食

select object(o) from Orders as o WHERE FUNC('YEAR', o.orderDate) = :def
参数

q.setParameter("def", def);