数据库是SQL Server2000,有张表Table,主键列名id,其余列名name
id是int自增长类型
现在遇到个问题,在hibernate中用hql语句查找多个id的记录,下面语句是在DAO类里的
String strHQL = "from Table where id in (1,2,3)";
return getHibernateTemplate().find(strHQL);//可以得到正确记录但是
String strHQL = "from Table where id in (?)";
return getHibernateTemplate().find(strHQL,参数);//这边这个参数该怎么写?
我用String类型的"1,2,3",会报类型转换错误,我知道是跟数据库里的int类型不对应,但是就是不清楚该怎么写,特来求教!
数据库映射什么的都没问题,hql可以查出数据的
id是int自增长类型
现在遇到个问题,在hibernate中用hql语句查找多个id的记录,下面语句是在DAO类里的
String strHQL = "from Table where id in (1,2,3)";
return getHibernateTemplate().find(strHQL);//可以得到正确记录但是
String strHQL = "from Table where id in (?)";
return getHibernateTemplate().find(strHQL,参数);//这边这个参数该怎么写?
我用String类型的"1,2,3",会报类型转换错误,我知道是跟数据库里的int类型不对应,但是就是不清楚该怎么写,特来求教!
数据库映射什么的都没问题,hql可以查出数据的
{
StringBuffer sb = new StringBuffer();
sb.append("from Table where id in (");
for (int i : is)
{
sb.append(i).append(",");
}
sb.deleteCharAt(sb.length() - 1);
sb.append(")"); return getHibernateTemplate().find(sb.toString());
}
Hibernate的Query对象完全可以解决你的问题。
Query query = session.createQuery("from Table where id in (:idList)");
query.setParameterList("idList", new int[] { 1, 2, 3 });
query.setParameterList("idList",newint[] {1,2,3 });编译报错,没有setParameterList(String,int[])这个方法
该成new Integer[] { 1, 2, 3 }