在JPQL中,什么是转义字符,我们可以用来转义字符,如"'"
例如:我正在做类似的事情
"......其中person.name ='安迪'"
这里工作正常
但当人名是安迪的时候,那么where子句变得像
"......其中person.name ='安迪''
并且它返回错误说
它无法弄清楚您的字符串文字在哪里结束。规范中很好地说明了解决方案:
包含单引号的字符串文字由两个单引号表示,例如:'literal''s'。
在你的情况下意味着:
...where person.name='Andy''s'
Run Code Online (Sandbox Code Playgroud)
下面是使用命名参数执行查询的示例代码.
Query query = entityManager.createQuery("SELECT p FROM Person p WHERE p.name LIKE :name" );
query.setParameter("name", personName);
Run Code Online (Sandbox Code Playgroud)
在这里,您可以传递字符串,personName其中可能包含特殊字符,如"Andy's".
此外,它看起来很干净,并且不需要在查询执行和更改搜索字符串之前检查参数.
| 归档时间: |
|
| 查看次数: |
6080 次 |
| 最近记录: |