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 に答える