在JPA 2.0中是否有办法设置具有特殊字符的查询参数?我的意思是,如果我这样做:query.setParameter(field, "%" + value.toString() + "%");
,它需要%作为特殊(通配符)字符?在我看来,在这种情况下并不是真的,因为我的搜索并没有使用截断的单词...
你能救我吗??
答案 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%佣金”作为查询参数发送给mysql,我会尝试query.setParameter(field, "john\\'s 10\\% commission")
;在您的情况下query.setParameter(field, "\\%" + value.toString() + "\\%");
应该有效。但是检查数据库的文档以找出特殊情况下的转义字符。