发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 云架构 框架 开发教程 SOA 大数据 扩展性 并发编程 EDA 分布式 函数编程
1 2 下一页 Go 2

hibernate 中如何使用 update 和 delete

2003-08-06 13:29
赞助商链接

我想更新所有 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();

2003-08-06 13:32

但是这样报错

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 怎么操作阿

2003-08-06 14:56

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

2003-08-06 15:48

恩 我改用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这样更新好慢阿 还是我的方法不对吗?

2003-08-06 15:55

好像没必要每次都flush吧。

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

2Go 1 2 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com