逃避JPQL中的角色

时间:2012-03-27 14:07:55

标签: jpa jpql

在JPQL中,什么是转义字符,我们可以用来转义字符,例如“'”

例如:我正在做类似

的事情

“......其中person.name ='Andy'”

这里工作正常

但是当人名是Andy的时候,where子句变得像

“......其中person.name ='安迪''

并返回错误

2 个答案:

答案 0 :(得分:5)

以下是使用命名参数执行查询的示例代码。

Query query = entityManager.createQuery("SELECT p FROM Person p WHERE p.name LIKE :name" ); 

query.setParameter("name", personName);

在这里,您可以将字符串传递给personName,其中可能包含像“Andy's”这样的特殊字符。

此外,它看起来很干净&在查询执行之前不需要检查参数&改变搜索字符串。

答案 1 :(得分:4)

无法弄清楚字符串字符串的结束位置。在规范中很好地告诉了解决方案:

  

包含单引号的字符串文字由两个表示   单引号 - 例如:'literal'''。

在您的情况下意味着:

...where person.name='Andy''s'