使用字符串的JPQL LIKE语法

时间:2014-03-15 15:49:50

标签: java sql postgresql jpa jpql

编辑:

我将硬编码查询更改为:

 query.setParameter("desc", "%unplug //your// server... enjoy the freedom%" ESCAPE '//')

现在我收到了com.sun.jdi.InvocationException occurred invoking method.


还没有产生堆栈跟踪。




我的PostgreSQL数据库中有一个描述列,我试图用一个' LIKE'条款,但我无法得到任何结果。这是一个例子:

    Query query = em.createQuery("from MyClass c WHERE c.description LIKE :desc");
    query.setParameter("desc", "%unplug /your/ server... enjoy the freedom%"); 

在数据库中,我有很多描述,包含上述文本的子字符串。我已经做了很多研究,并研究了逃避特殊字符等,但没有任何效果。

我遗失了一些东西,我无法弄清楚那是什么。

1 个答案:

答案 0 :(得分:0)

很可能是斜杠/搞乱了PG中的解析。将参数转换为带引号的文字。除非你确定没有特殊字符进入字符串参数(即你控制字符串),否则总是是避免SQL注入的好主意。

query.setParameter("desc", "quote_literal('%unplug /your/ server... enjoy the freedom%')");