使用hibernate命名参数两次

时间:2013-04-27 11:19:49

标签: java hibernate jpa

假设我有以下HQL

EntityManager.createQuery("SELECT a FROM a WHERE a.b = :par OR a.c = :par").setParameter("par", obj);

似乎不起作用。有没有人知道如何解决这个问题仍然只使用一个参数?

2 个答案:

答案 0 :(得分:24)

setParameter(String name,Object val)

这用于将值绑定到命名参数。但是,在无关紧要的查询中,名称可能会多次出现。因此,请检查一下您是否确实拥有该查询的数据。

查看文档here

该文档中的一些主要文本

命名查询参数是表单的标记:查询字符串中的名称。值通过调用绑定到整数参数:foo setParameter(“foo”,foo,Hibernate.INTEGER); 例如。名称可能会在查询字符串中多次出现。

如果仍然没有得到结果,那么只需尝试使用两个名称并设置它

  

EntityManager.createQuery(“SELECT a FROM a WHERE a.b =:par1 OR a.c =:par2”)。setParameter(“par1”,obj).setParameter(“par2”,obj);

答案 1 :(得分:0)

setParameter(String name,Object val)

替换查询中指定的所有出现的名称。