java Hibernate更新有时不起作用
我需要根据uuid更新行,其中一个uuid可能与多个行关联
以下是场景: 4a90558c-4a5b-4af7-8c68-60ff81f74ef3是我的uuid,它存在于我的数据库中的8列中
我的java代码如下:
try{
session = sessionFactory.getCurrentSession();
tx = session.getTransaction();
criteria = session.createCriteria(Archive.class);
criteria.add(Restrictions.eq("bagUuid", "4a90558c-4a5b-4af7-8c68-60ff81f74ef3"));
ScrollableResults items = criteria.scroll();
while ( items.next() ) {
Archive archive = (Archive)items.get(0);
archive.setDecision(1);
archive.setOperatorAssigned("test");
session.saveOrUpdate(archive);
session.flush();
session.clear();
}
tx.commit();
LOGGER.info("Archive Record is updated: "+archive.getFilePath());
}catch(Exception e){
recordUpdated = false;
tx.rollback();
LOGGER.error("Archive Record failed to update due to exception in updateArchiveRecord method: "+e.getMessage());
}
在这里,与UUID关联的所有记录有时都在更新,但有时会失败。 我认为这可能是HibernateAPI的问题。 有没有其他人也面临过同样的问题
# 1 楼答案
这条线看起来可疑:
这意味着,不管ScrollableResults中有多少项,您将只更新第一个存档对象。如果我理解了您试图正确执行的操作,则应该是当前记录:
此外,我会移出/删除会话。flush()和session。清除()。最终的代码如下所示:
斯拉瓦·伊梅舍夫