hibernate中的setParameterList如何工作?

A N*_*ter 4 java mysql hibernate

我对hibernate的setParameterList api有一些问题.

我试图将一个Collection传递给SQLQuery并进行"in"子句搜索.记录存在于DB中并进行原始查询,我能够检索它们或者如果我只是在相同的Hibernate SQL中替换它们emp.emp_name in ('Joe','John'),我能够得到理想的结果集.我很困惑为什么Hibernate无法替换Collection而不是命名参数.这是代码:

session.createSQLQuery("select emp_id as id from emp where emp.emp_name in (:empNames)")
       .addScalar("id",Hibernate.INTEGER)
       .setParameterList("empNames",new String[]{"Joe","John"})
       .list()
Run Code Online (Sandbox Code Playgroud)

我查看了setParameterListHibernate文档,但我无法推断出这种特殊行为.

Jon*_*eet 7

怀疑问题正是因为你正在使用createSQLQuery.这里的单个参数需要在真正的SQL中更改为多个参数,但是通过使用"原始"查询,您告诉Hibernate不要乱用SQL.

您可以使用"普通"Hibernate查询吗?