3

如何使用休眠 3.5 执行以下操作

INSERT INTO Table (Column1, Column2 ) VALUES
(Value1, Value2), (Value1, Value2)
4

2 回答 2

1

您可能需要考虑使用无状态会话。但是,要小心,因为返回的结果(在这种情况下为客户)是分离的。

http://docs.jboss.org/hibernate/orm/3.5/reference/en/html/batch.html#batch-statelesssession

StatelessSession session = sessionFactory.openStatelessSession();
Transaction tx = session.beginTransaction();

ScrollableResults customers = session.getNamedQuery("GetCustomers")
    .scroll(ScrollMode.FORWARD_ONLY);
while ( customers.next() ) {
    Customer customer = (Customer) customers.get(0);
    customer.updateStuff(...);
    session.update(customer);
}

tx.commit();
session.close();
于 2013-01-09T14:52:59.783 回答
0

下面的链接可以为您提供解决方案。

http://docs.jboss.org/hibernate/orm/3.5/reference/en/html/batch.html

Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();

String hqlInsert = "insert into DelinquentAccount (id, name) select c.id, c.name from Customer c where ...";
int createdEntities = s.createQuery( hqlInsert )
        .executeUpdate();
tx.commit();
session.close();
于 2012-10-19T06:28:35.573 回答