假设我有以下 HQL
EntityManager.createQuery("SELECT a FROM a WHERE a.b = :par OR a.c = :par").setParameter("par", obj);
似乎不起作用。有人知道如何仅使用一个参数来解决此问题吗?
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);
setParameter(String name,Object val)
替换查询中指定的所有出现的名称。