2017-02-01 5 views
-1

オブジェクト節約しながらHibernateOptimisticLocking例外を取得:私はコードでモデルファイル持って

Signature.javaここで私はからsignatureImageを取得しています。このオブジェクトで

public class Signature implements Serializable { 
    private String id; 
    private int version; 
    private byte[] signatureImage; 
    private String signatureImageName; 
    private String name; 
    private String title; 
    // the getters setters methods 
} 

、その後MultipartFileとを使用してJSPをこのフィールドにバイトを保存します。私は次のように私のコントローラとdaohibernateコードからこのオブジェクトは保存しています:

Session session = getSessionFactory().getCurrentSession(); 
session.saveOrUpdate(signature); 

は今、私はエラーを取得しています:

:要求の処理中に: - > HibernateOptimisticLockingFailureException、E :: org.springframework .orm.hibernate4.HibernateOptimisticLockingFailureException:識別子が[]のクラスcom.model.Signatureのオブジェクト:オプティミスティック・ロックに失敗しました。ネストされた例外はorg.hibernate.StaleObjectStateExceptionです:行は更新または削除別のトランザクションによって(または保存されていない値のマッピングが間違っていました)した

は今、これはsaveOrUpdateクエリへの単一の呼び出しである[com.model.Signature番号]スレッドがない場合は、このエラーも発生しています。

+0

これは正確に言えば、これはデータベース内のこのレコードを変更したサービスです。したがって、バージョン情報は適合せず、更新は拒否されます。このレコードを変更したものを分析する必要があります。 –

+0

SIr、私のアップデートは正常に動作しています。レコードを更新すると、新しいレコードを保存するとエラーは発生せず、このエラーが表示されます。実際には、このテーブルでも削除操作を行っています。だから、このエラーの原因となる操作を削除できますか? –

+0

すでに存在する新しいレコードに主キーを使用していますか? –

答えて

0

ここでエラーが発生しました。来ているIDはnullではなく ""(空)です。

これは、保存しないレコードを更新しようとしていた理由です。

したがって、idの値をnullに変更すると、レコードが保存されました。

ありがとうございました

関連する問題