使用set参数在JPA查询中插入特殊字符

时间:2013-10-23 07:44:01

标签: java sql jpa postgresql-9.1

在JPA 2.0中是否有办法设置具有特殊字符的查询参数?我的意思是,如果我这样做:query.setParameter(field, "%" + value.toString() + "%");,它需要%作为特殊(通配符)字符?在我看来,在这种情况下并不是真的,因为我的搜索并没有使用截断的单词... 你能救我吗??

3 个答案:

答案 0 :(得分:1)

如果您正在使用

LIKE :feild 

query.setParameter(field, "%" + value.toString() + "%");

然后价值保持不受'%'的影响。您可以尝试在查询中使用%并从setParameter()方法发送值。

您还可以尝试JPA的 CreteriaBuilderInterface http://www.objectdb.com/java/jpa/query/jpql/string

答案 1 :(得分:0)

你必须逃避查询。尝试使用"\\%"代替

答案 2 :(得分:0)

您作为查询参数传递的内容将传递给查询并返回数据库。因此,查询参数的转义字符的选择将取决于数据库。就像在mysql中一样,“\”代表“'”,“\%”代表“%”,所以如果我想将“john的10%佣金”作为查询参数发送给m​​ysql,我会尝试query.setParameter(field, "john\\'s 10\\% commission");在您的情况下query.setParameter(field, "\\%" + value.toString() + "\\%");应该有效。但是检查数据库的文档以找出特殊情况下的转义字符。