0

我对 Hibernate 有一个很大的问题。当我尝试更新或保存表中的元素时,出现此错误:

org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

当我调用我的 DAO 服务时会产生这个错误:

Session session = sessionFactory.getCurrentSession();
session.saveOrUpdate(object);
session.flush();

当我调试时,在 flush() 之后会生成错误。

这里是表的关键:

@EmbeddedId
@AttributeOverrides( {
        @AttributeOverride(name = "sysDocId", column = @Column(name = "SYS_DOC_ID", nullable = false)),
        @AttributeOverride(name = "sysDataFile", column = @Column(name = "SYS_DATA_FILE", nullable = false)) })
public RelDocFileId getId() {
    return this.id;
}

谢谢大家

4

1 回答 1

0

这意味着 Hibernate 在数据库中找不到这条记录,UPDATE 语句返回结果:0 行受到该更新的影响。

Hibernate 发现您要更新的内容不再存在,这意味着您正在保存过时的数据。

您不应该允许这种情况或适当地处理此异常,关闭会话并向用户说“嘿,您看到了一个过时的数据,它不再存在”。

于 2012-09-19T12:31:05.867 回答