我正在尝试保存循环中的对象,但它不起作用,最初它在表中插入行,然后为每个循环更新相同的行。
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模型的对象时,只有一行插入,同一行将在稍后更新。
请告诉我,我如何解决这个问题?
感谢您的帮助:)
答案 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();
}
这将在单个查询中完成您的工作。