+ -
当前位置:首页 → 问答吧 → 一个Hibernate问题望高人求救!

一个Hibernate问题望高人求救!

时间:2011-08-26

来源:互联网

public boolean findStuByIdAndPsw(Integer integer, String psw) {
List<Student>stu=getHibernateTemplate().find("from Student as st where st.stuid=?  
  and st.password=?",new String []{integer,psw});
System.out.println("daxiao"+stu.size());
if(stu.size()!=0)
{
return true;
}
else
return false;
}

代码如上我传入的id是int型,那么写hibernate语句的时候那个两个参数的数组怎么写啊,一个是int一个string,请问怎么解决啊 ?跪求! List<Student>stu=getHibernateTemplate().find("from Student as st where st.stuid=?  
  and st.password=?",new String []{integer,psw});

作者: han3970956   发布时间: 2011-08-26

public static final String SELECT_AG_ET_C123_HIST_SQL = "FROM AgEtC123Hist a WHERE a.id.hetCOnAcc = :userId AND a.id.hetCreateDate <= :trnDate order BY a.id.hetCreateDate DESC";

@Override
public List<AgEtC123Hist> getList(String userId, Date trnDate) {
String sql = SELECT_AG_ET_C123_HIST_SQL;
Query q = session.createQuery(sql);
q.setString("userId", userId);
//q.setDate("trnDate", trnDate);
q.setTime("trnDate", trnDate);
List<AgEtC123Hist> sqlList = q.list();
return sqlList;
}

给这个你参考下

作者: jiangdaxian2003   发布时间: 2011-08-26

为什么要用new String []呢,用new Object[]试试

作者: superpole   发布时间: 2011-08-26

必须是这个!
引用 2 楼 superpole 的回复:

为什么要用new String []呢,用new Object[]试试

作者: forestandriver23   发布时间: 2011-08-26

Ls正解,同时你也可以转一下Integer.parseInt(id.toString()))

作者: icangfeng   发布时间: 2011-08-26

把 new String []{integer,psw};
换成 new Object[]{integer,psw};或者用set他的参数,就OK了。。。

作者: sun_s   发布时间: 2011-08-26

这个部队,不能转成String,因为hibernate的类型检查不能通过的。否则最后生成的preparedStatment中该赋数值型的参数却赋了字符串,那就不对了。就像select * from table where int_a=0 被改成 select * from table where int_a='0',这是不对的。
引用 4 楼 icangfeng 的回复:

Ls正解,同时你也可以转一下Integer.parseInt(id.toString()))

作者: forestandriver23   发布时间: 2011-08-26

没仔细看,4楼同学说的对!sorry
引用 6 楼 forestandriver23 的回复:

这个部队,不能转成String,因为hibernate的类型检查不能通过的。否则最后生成的preparedStatment中该赋数值型的参数却赋了字符串,那就不对了。就像select * from table where int_a=0 被改成 select * from table where int_a='0',这是不对的。
引用 4 楼 icangfeng 的回复:

Ls正解,同时……

作者: forestandriver23   发布时间: 2011-08-26

楼主不用那样做,不是可以传可变数组的吗,那样传进去什么类型 就是什么类型了! 
  
 望参考: public <E> E executeHQLForObject(final String hql,final Object...params){
return (E) this.getHibernateTemplate().execute(new HibernateCallback(){
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Query query = session.createQuery(hql);
if(params!=null){
int i = 0;
for(Object o : params){
query.setParameter(i++,o);
}
}
return query.uniqueResult();}

});
}

作者: lianjiaying   发布时间: 2011-08-26

integer+""

作者: xinlan1022   发布时间: 2011-08-26

热门下载

更多