jpa JPQL中的转义符

k4emjkb1  于 2022-11-24  发布在  其他
关注(0)|答案(2)|浏览(216)

在JPQL中,我们可以使用什么转义字符来转义字符(如"'")?
例:我正在做类似于
...where person.name='Andy'
这里工作正常
但是当这个人的名字是Andy's时,where子句就变成了
...where person.name='Andy's'
它会返回一个错误

lyr7nygr

lyr7nygr1#

它无法判断字符串文字在哪里结束。解决方案在规范中很好地说明了:
包含单引号的字符串文字由两个单引号表示,例如:'常值''s'。
在您的情况下是指:

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

vnzz0bqm2#

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

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

query.setParameter("name", personName);

在这里,你可以将字符串传递给personName,其中可能包含特殊字符,如"Andy's"。
而且,它看起来很干净,不需要在查询执行前检查参数,也不需要改变搜索字符串。

相关问题