21

假设我有以下 HQL

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

似乎不起作用。有人知道如何仅使用一个参数来解决此问题吗?

4

2 回答 2

31
setParameter(String name,Object val)

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

在此处查看文档

该文档中的一些主要文本

命名查询参数是查询字符串中 :name 形式的标记。通过调用 setParameter("foo", foo, Hibernate.INTEGER); 将值绑定到整数参数 :foo 例如。一个名称可能在查询字符串中出现多次。

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

EntityManager.createQuery("SELECT a FROM a WHERE ab = :par1 OR ac = :par2").setParameter("par1", obj).setParameter("par2", obj);

于 2013-04-27T11:47:08.450 回答
1
setParameter(String name,Object val)

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

于 2019-04-03T09:11:05.607 回答