0

まず第一に、私の英語がとても下手で申し訳ありません。私は休止状態を使用するのは初めてなので、上級者全員に尋ねたい質問があります。ここに条件があります:ビューにzkを使用しています.1つのビューには、(追加)、(保存)、(キャンセル)ボタンのあるツールバーがあります。だから私が欲しいのは、ユーザー klik (追加) hibernate が新しいトランザクションを開始し、ユーザーがそのユーザー klik (保存) の後にデータを挿入するときです。この (保存) ボタン イベントで、hibernate は commit を呼び出してデータをデータベースに挿入します。

問題は、ユーザー klik が保存するときです。プログラム フローを 1 回トレースした後、「アクティブなトランザクションがないとコミットできません」というメッセージが表示され、ユーザーが (保存) ボタンを klik すると、以前に開始したトランザクションがアクティブではなくなりました。

## 私が聞きたいのは、まだコミットしていないのになぜトランザクションが非アクティブなのかということです。##

私は休止状態と休止状態で春を使用しています.current_session_context_class = Thread

助けてくれてありがとう

4

1 に答える 1

1

コードを見ないと何とも言えません。しかし、あなたがやりたいことは非常に悪い考えです。やらないでください。トランザクションはできるだけ短くする必要があります。トランザクションを長時間開いたままにすると (ユーザーが [追加]をクリックしてから [保存] をクリックするまでに時間がかかる場合があります)、接続が開いたままになり、他の同時ユーザーが使用できなくなります。いずれにせよタイムアウトが発生し、一部のデータベース行がロックされたり、ロックされたりする可能性があります。他のすべてのユーザーがトランザクションの終了を待つようにします。

データベースへの挿入とコミットは、ユーザーが [保存] ボタンをクリックしたときにのみ実行する必要があります。[追加] ボタンによって行われた変更は、ユーザーが [保存] をクリックするまで、データベースに保存するのではなく、メモリに保存する必要があります。

于 2011-10-11T08:44:07.977 に答える