1

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

4

3 回答 3

1

如果您正在使用

LIKE :feild 

为了

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

然后 value 仍然没有 '%' 符号。您可以尝试在查询中使用 % 并从 setParameter() 方法发送值。

您也可以尝试JPA 的CreteriaBuilderInterfacehttp://www.objectdb.com/java/jpa/query/jpql/string

于 2013-10-23T08:19:16.407 回答
0

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

于 2013-10-23T08:08:44.800 回答
0

你必须逃避查询。尝试"\\%"改用

于 2013-10-23T07:53:28.797 回答