突然发现Query.setParameterList原来是如此:

有两种参数的重载方式:

Java代码    


public Query setParameterList(String name, Collection vals) throws HibernateException;  
  
  
public Query setParameterList(String name, Object[] vals, Type type) throws HibernateException;

它们都是用在hql/sql语句 in (...)情况下的, list或object[]会组成in集合, 并不是本以为的变成:

set(0, para1); 
set(1, para2); 
...

另外有一个方法,需要注意了:

Java代码    

 

public Query setParameters(Object[] values, Type[] types) throws HibernateException;

这里又不是用在in了,而是顺序组装参数:

Set(0, param1); 
Set(1, param2);