gpt4 book ai didi

java - Hibernate更新有时不起作用

转载 作者:行者123 更新时间:2023-12-02 04:33:49 25 4
gpt4 key购买 nike

我有一个要求,即根据 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 关联的所有记录都会更新,但有时会失败。我认为这可能是 Hibernate API 的问题。其他人是否遇到过同样的问题。

最佳答案

这一行看起来很可疑:

Archive archive = (Archive)items.get(0);

这意味着无论 ScrollableResults 中的项目数量有多少,您都将仅更新第一个 Archive 对象。如果我正确地理解你想要做什么,它应该是当前记录:

Archive archive = (Archive)items.get();

另外,我会移出/删除 session.flush() 和 session.clear()。最终代码如下所示:

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();
archive.setDecision(1);
archive.setOperatorAssigned("test");
session.saveOrUpdate(archive);
}
tx.commit();
session.close();
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());
}

斯拉瓦·伊梅舍夫

关于java - Hibernate更新有时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31088735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com