注册 登录
编程论坛 J2EE论坛

getHibernateTemplate()的查询问题(已解决)

hwoarangzk 发布于 2007-12-28 15:53, 6319 次点击
我想根据username来查询纪录,然后删除:
public void delete(String username) {
        String QueryUserByUsername = "from User u where u.username=:"+username;
        List list = getHibernateTemplate().find(QueryUserByUsername);
        User user = (User)list.get(0);
        getHibernateTemplate().delete(user);
    }
User有以下属性:id,username,age,address,job
但是总报错:
EVERE: Servlet.service() for servlet action threw exception
org.springframework.orm.hibernate3.HibernateQueryException: Not all named parameters have been set: [Bob] [from User u where u.username=:Bob]; nested exception is org.hibernate.QueryException: Not all named parameters have been set: [Bob] [from User u where u.username=:Bob]
org.hibernate.QueryException: Not all named parameters have been set: [Bob] [from User u where u.username=:Bob]
可能是我的hql语句不对。请问应该怎么写才能正常查询啊?谢谢~~~

[[italic] 本帖最后由 hwoarangzk 于 2007-12-28 16:14 编辑 [/italic]]
6 回复
#2
hwoarangzk2007-12-28 16:13
String QueryUserByUsername = "from User u where u.username=?";
List list = getHibernateTemplate().find(QueryUserByUsername, username);
果然是没写对,改成这样就可以了
#3
黄袖标2007-12-29 10:06
getHibernateTemplate().是干什么用的
一般我都这样写
Criteria c = session.Create....;
......
c.add(Restrictions.eq("property",xxx));
c.list();

lz这个写法getHibernateTemplate().也是个常用的api么?
#4
黄袖标2007-12-29 10:14
getHibernateTemplate().好像是hibernate自动启动一个事务,但是这样如果多线程调用会启动多个事务么?
还有,lz是find,就是不涉及db更新,为什么要启动一个事务呢,请lz不吝赐教。

哦,忘记lz要delete了。。

[[italic] 本帖最后由 黄袖标 于 2007-12-29 16:06 编辑 [/italic]]
#5
hwoarangzk2008-01-02 09:49
getHibernateTemplate()是spring里面一个HibernateDaoSupport的方法,返回一个HibernateTemplate,可以调用一些操作数据库的方法,启动事务这些都是配好了的,不用管的
#6
黄袖标2008-01-03 09:13
了解了。
#7
b28311962008-01-03 22:22
1