如何在HIbernate中的循环中保存对象?

时间:2016-07-25 07:25:24

标签: hibernate loops

我正在尝试保存循环中的对象,但它不起作用,最初它在表中插入行,然后为每个循环更新相同的行。

PFB我的代码。

@Override
    public void saveConfirmDisposalAction(ConfirmDisposalAction confirmDisposal, List<Long> objectIDList) {
        for(ObjectCommon objectCommon : getObjectList(objectIDList)){
            confirmDisposal.setObjectId(objectCommon);
            confirmDisposal.setStorageLocation(objectCommon.getStorageLocation());
            objectActionService.saveObjectAction(confirmDisposal);
        }
    }
从getObjectList方法

,我从数据库获取对象列表并在循环中迭代。 当我试图保存ConfirmDisposalAction模型的对象时,只有一行插入,同一行将在稍后更新。

请告诉我,我如何解决这个问题?

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

您不应该保存循环中的每个对象,尝试使用批处理。

    Session session = sessionFactory.openSession();
    Transaction transaction = session.beginTransaction();
    try {
        session.doWork(new Work() {
            public void execute(Connection connection) throws SQLException {
                Statement statement = connection.createStatement();
                for (Object obj : list) {
                    String str = "";
                    statement.addBatch(str);
                    statement.executeBatch();
            }
        });
    } catch (Exception ex) {
        SystemUtils.logException(ex);
        LOGGER.warn("Error ", ex);
    } finally {
        session.flush();
        transaction.commit();
        session.close();
    }

这将在单个查询中完成您的工作。