使用过hibernate的高手请进 先把对象load出来,然后把对象的属性重新设置,然后保存 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那是不是要把所有的对象都要load出来,修改以后。再保存啊。 用Query对象直接进行更新(用update的HQL语句,要3.0以后的才支持)可以一次完成,不用装载对象,详细信息看参考。Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); String hqlUpdate = "update User user Set user.name = :newName"; int deletedEntities = s.createQuery( hqlUpdate ) .setString( "newName", "Mike" ) .executeUpdate(); tx.commit(); session.close(); 多谢楼上高手的指点,不过要是在版本为2.1.7上实现,如何能用最简单的方法实现呢,如果把所有的对象都load出来,在修改,那在效率上肯定要差很多。 14.2. 批量更新(Batch updates)此方法同样适用于检索和更新数据。此外,在进行会返回很多行数据的查询时, 你需要使用 scroll() 方法以便充分利用服务器端游标所带来的好处。 Session session = sessionFactory.openSession();Transaction tx = session.beginTransaction(); ScrollableResults customers = session.getNamedQuery("GetCustomers") .setCacheMode(CacheMode.IGNORE) .scroll(ScrollMode.FORWARD_ONLY);int count=0;while ( customers.next() ) { Customer customer = (Customer) customers.get(0); customer.updateStuff(...); if ( ++count % 20 == 0 ) { //flush a batch of updates and release memory: session.flush(); session.clear(); }} tx.commit();session.close(); 呵呵,上面的方法也不错,不过还是感觉把简单一个update语句复杂化了,有没有更简单一些的方法呢,多谢,:P hibernate2.x的没有提供很多的更新方法 一道java题目,等待大家给予解答~~ lazy默认是false还是true啊 struts配置 Hibernate能否获取存储过程里的输出参数? 下拉框级联问题 webWork无法获取参数 eclipse j2ee+tomcat7.0怎么配置jndi 基于JDOM,用Schema验证XML的有效性老是出现这样的异常,帮帮忙! 方案的选择.hibernate JMS能否实现异构系统的信息传输?来者有分。 Java客户端调用C++的WebService出现错误,请帮忙看看,急啊! 各位老虾请进!小弟处于转型期,web service前途到底怎么样啊?送50分。。。。大家顶啊
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction(); String hqlUpdate = "update User user Set user.name = :newName";
int deletedEntities = s.createQuery( hqlUpdate )
.setString( "newName", "Mike" )
.executeUpdate();
tx.commit();
session.close();
此方法同样适用于检索和更新数据。此外,在进行会返回很多行数据的查询时, 你需要使用 scroll() 方法以便充分利用服务器端游标所带来的好处。 Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
ScrollableResults customers = session.getNamedQuery("GetCustomers")
.setCacheMode(CacheMode.IGNORE)
.scroll(ScrollMode.FORWARD_ONLY);
int count=0;
while ( customers.next() ) {
Customer customer = (Customer) customers.get(0);
customer.updateStuff(...);
if ( ++count % 20 == 0 ) {
//flush a batch of updates and release memory:
session.flush();
session.clear();
}
}
tx.commit();
session.close();