JPA查询LIKE不起作用

时间:2017-04-15 20:09:03

标签: java jpa jpql

此查询有什么问题:SELECT i FROM Item i WHERE 1 = 1 AND UPPER(i.nome) LIKE %:nome% ORDER BY UPPER(i.nome)?我在LIKE'%:nome%'中尝试使用和不使用单引号。但它没有用。

Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: 
Exception Description: Syntax error parsing [SELECT i FROM Item i WHERE 1 = 1  AND UPPER(i.nome) LIKE %:nome%  ORDER BY UPPER(i.nome)]. 
[56, 63] The identification variable '%:nome%' is not following the rules for a Java identifier.
    at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createQuery(EntityManagerImpl.java:1605)

1 个答案:

答案 0 :(得分:1)

正如here所解释的那样,您需要在设置参数时用%包装值,例如:

query = em.createQuery("SELECT i FROM Item i WHERE 1 = 1  AND UPPER(i.nome) LIKE :nome  ORDER BY UPPER(i.nome)");
query.setParameter("nome","%"+nome.toUpperCase()+"%");