我有一个hibernate搜索,它允许通过他们的描述搜索工作。这使用一个like查询将描述中找到的任何单词与正在搜索的单词进行匹配。下面的代码可以正常工作,但是很容易被输入到搜索框中的'或'1'='1的形式。这将输出整个表,当然我不想要。
log.debug("REST request to search Jobs for query {}", query);
Session session = HibernateUtil.getSession();
Query a = session.createQuery("select jobs from Jobs jobs where jobs.description like '%" + query + "%'");
return a.list();
我相信我需要使用参数绑定来纠正这个问题,但是我似乎不能让它工作。下面是我尝试过的一些代码,但是我只是得到了一个500内部服务器错误。我找不到任何使用like查询的例子,所以这会造成一些混乱。我可能忽略了一些显而易见的东西,因为我以前从来没有使用过 hibernate 。
Query a = session.createQuery("select jobs from Jobs jobs where jobs.description like '%" + query + "%'");
a.setParameter("description", a);
return a.list();
1条答案
按热度按时间ckx4rj1h1#
下面是如何在JPA中使用命名参数:
setParameter
接受你的参数名,你在查询中前缀为:
作为第一个参数,你想放进去的值作为第二个参数。