私は現在、古いWindowsアプリケーションを修正しており、Hibernateエラーが発生しました。私はネットでいくつかのことを読んで試しましたが、最終的にエラーに終わりました。ここでNHibernate SaveOrUpdateエラー
はISessionのために私のコードです:ここでは
Public ReadOnly Property session() As ISession
Get
If IsNothing(m_session) Then
m_session = Factory.InitConfiguration.OpenSession()
End If
Return m_session
End Get
End Property
は、保存ボタンのための私のコードです:
Try
session.BeginTransaction()
SetParent(x_object)
'session.clear()
session.Flush()
session.SaveOrUpdate(x_object)
session.Transaction.Commit()
compObj.IsNew = False
Return True
Catch ex As Exception
AppServices.ErrorMessage = ex.Message
session.Transaction.Rollback()
Return False
Finally
'TBA
End Try
ので、問題はここから始め、私は日時とAttachmentListとしてこの日付列を持っています。
今年のユーザーキーが1753未満になるまで、現在のコードは問題ありません。しかし、コードはエラーを正しくキャッチしてメッセージを表示し、ユーザーが年年のタイプミスを修正し続けると、ユーザーがアプリケーションを閉じてから再び開くまで、エラーをキャッチしています(ウォッチでは新しい値を取得しています)。
しかし、私がsession.clear()のコメントを外してしまえば、ユーザーは入力ミスを修正してレコードを保存し続けることができますが、ユーザーが別のアクションを実行すると、エラー。以下のようにアタッチメントアクション:
だから行われるために必要なものの上に私をアドバイスをしてください。私はマージを試みました、私は更新を試みました、保存して、エビクトが、エラーを終了します。私は自分の問題は、私がどのようにセッションを整理するのが問題の主な原因だと思う。
'm_session'と' x_object'の範囲は何ですか?エンティティをDTOのようなものにマッピングしていますか? –
@A_Jはいエンティティを多くの子にマッピングし、1つの親として設定しています。しかし、私の問題はフレデリックの説明によって解決されます。あなたは理由を紹介するかもしれません。 –