使用Hibernate的HQL怎么条件查询老师返回空的list?高手帮忙看看

来源:百度知道 编辑:UC知道 时间:2024/09/20 17:00:07
正在一个Dao实现类中编写一个方法根据活动类型查找所有相应类型的活动信息(分类查询),但是总是返回的list的size为0也就是查询不到,不知道为什么,请教有经验的高手,有点郁闷额。。。
相关代码如下:
public List<CityEvent> getCityEventByType(String etype){

Session session = getSession();
List<CityEvent> elist = null;
try{

elist = session.createQuery("from CityEvent event where event.type=?")
.setString(0, etype)
.list();
//System.out.println("list size:"+elist.size());
session.close();
}catch(HibernateException ex){
ex.printStackTrace();
throw ex;
}

return elist;
}
有什么其他需要知道的尽管说明,我补充上
type是一个字段,不是关键字,type就是event的活动类型的意思吧。我就是要根据type来查找相应活动类型的所有event。但是如果我制定要查找如type='music'这样是可以的list有值,但是我一旦加入了参数就出问题,返回list为0,就像上面代码。并且那个type值可以打印出来。不知道这样传参是正确的吗?
为了明确问题再补充下:我这样是可以的:
elist = session.createQuery("from CityEvent event where event.type=?").setString(0, "music").list();

问题1:你的事务呢?
问题2:HQL语句中 小写的event是什么?自己写的名字吗?还有event.type=?是什么为什么要这样写呢?模糊查询,精确查找?都不像嘛。。。

事务是从session中取得的,
而session是从SessionFactory中取得的,
Session session = SessionFactory.openSession();//像你那样写就可以了!
Transaction tran = session.beginTransaction(); //必须得有

//Transaction tran = new ....你应该这样写
事务开始-》数据操作(增,删,查,改)-》事务结束-》出现异常(事务回滚)就是。。。比如:tran.roback ....

不明白的就M我

我看了前面几个的回答,好像都没回答道点子上。
elist = session.createQuery("from CityEvent event where event.type=?")
.setString(0, etype).list();
你这句有问题,你这么写:
String hql="from CityEvent event where event.type=:type";
elist =session.createQuery(hql).setString("type",etype).list();
另外有两个问题我不太确定:
第一:type是String类型吗?如果是,把hql改成这样试试:
String hql="from CityEvent event where event.type=':type'";
第二:传进去的参数etype 的值是多少?可以打印出来看看。
给你个建议,如果知道etype的值,那么hql语句就知道了,可以直接变成sql语句到数据库里去查询,看能否查出来。
希望上面的回答对你有帮助:)<