在JPQL中,什么是转义字符,我们可以用来转义字符,例如“'”
例如:我正在做类似
的事情“......其中person.name ='Andy'”
这里工作正常
但是当人名是Andy的时候,where子句变得像
“......其中person.name ='安迪''
并返回错误
答案 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'