hibernate 中如何使用 update 和 delete

我想更新所有 person 中的 address 字段
Session sess = sessionFactory.openSession();
Transaction t = sess.beginTransaction();
String queryString = "select person from Person as person";
Query query = sess.createQuery(queryString);

for(Iterator it=query.iterate();it.hasNext();){
ps=(Person)it.next();
ps.setAddress("updateAddress");
sess.update(ps);
//System.out.println("ID: " + ps.getId() + ", NAME:" + ps.getName() + ", 地址:" + ps.getAddress());
}
t.commit();
sess.close();

但是这样报错

net.sf.hibernate.HibernateException: Session is currently disconnected
at net.sf.hibernate.impl.SessionImpl.connection(SessionImpl.java:2755)
at net.sf.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:58)
at TestCompany.vast(TestCompany.java:214)
at TestCompany.main(TestCompany.java:240)
Exception in thread "main"

这是为什么啊? update 和 delete 怎么操作阿

一般来说update()是不需要你调用的,除非一个对象在上一个session
中取得,然后做了一些修改,再在另一个session中更新到数据库时才
需要用到,而在本session中修改的数据在你调用tx.commit()时会自动同步到数据库。

恩 我改用session.flush 就可以更新了
Iterator iter = sess.iterate("select person from Person as person");

while(iter.hasNext()){
ps=(Person)iter.next();
ps.setAddress("test");
sess.flush();
}
我是想测试一下hibernate的性能 用了100000条数据 但是hibernate这样更新好慢阿 还是我的方法不对吗?

好像没必要每次都flush吧。

这样一条条更新肯定慢了,好像没什么好办法了。

可以取得jdbc connection,写sql来update,这样快!

对阿 我用jdbc sql 这样成批的更新很快 但用sql 这样一条一条这样更新的话那一定也很慢的

hibernate query为何没有updare delete 的操作呢?

yehs220 能不能留个网上的联系方式,最近在学习hibernate 看了他的文档 我的msn ; paul.hua@akup.com qq:10298365