一尘不染

两次使用休眠命名参数

hibernate

假设我有以下HQL

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

似乎不起作用。是否有人只使用一个参数就可以解决此问题?


阅读 216

收藏
2020-06-20

共1个答案

一尘不染

setParameter(String name,Object val)

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

此处查看文档

该文档中的一些主要文字

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

如果仍然没有得到结果,则尝试使用两个名称并进行设置

EntityManager.createQuery(“从某处选择ab =:par1或ac =:par2”)。setParameter(“
par1”,obj).setParameter(“ par2”,obj);

2020-06-20