【问题标题】:Insert special characters in JPA query with set parameter使用 set 参数在 JPA 查询中插入特殊字符
【发布时间】:2013-11-01 09:05:07
【问题描述】:

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

【问题讨论】:

  • 请也显示您的查询

标签: java sql jpa postgresql-9.1


【解决方案1】:

如果你正在使用

LIKE :feild 

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您必须转义查询。尝试改用"\\%"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-06
        • 2019-10-13
        • 1970-01-01
        • 2016-11-24
        • 2023-03-10
        相关资源
        最近更新 更多