编辑:
我将硬编码查询更改为:
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%");
在数据库中,我有很多描述,包含上述文本的子字符串。我已经做了很多研究,并研究了逃避特殊字符等,但没有任何效果。
我遗失了一些东西,我无法弄清楚那是什么。
答案 0 :(得分:0)
很可能是斜杠/搞乱了PG中的解析。将参数转换为带引号的文字。除非你确定没有特殊字符进入字符串参数(即你控制字符串),否则总是是避免SQL注入的好主意。
query.setParameter("desc", "quote_literal('%unplug /your/ server... enjoy the freedom%')");