先把对象load出来,然后把对象的属性重新设置,然后保存

解决方案 »

  1.   

    那是不是要把所有的对象都要load出来,修改以后。再保存啊。
      

  2.   

    用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();
      

  3.   

    多谢楼上高手的指点,不过要是在版本为2.1.7上实现,如何能用最简单的方法实现呢,如果把所有的对象都load出来,在修改,那在效率上肯定要差很多。
      

  4.   

    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();
      

  5.   

    呵呵,上面的方法也不错,不过还是感觉把简单一个update语句复杂化了,有没有更简单一些的方法呢,多谢,:P
      

  6.   

    hibernate2.x的没有提供很多的更新方法