問題タブ [hibernate-session]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
8 に答える
99617 参照

hibernate - Hibernate: session.get と session.load の違い

API から、プロキシと関係があることがわかりました。session.getしかし、プロキシに関する多くの情報を見つけることができず、呼び出しとの違いがわかりませんsession.load。誰かが説明してくれたり、参照ページに案内してくれませんか?

ありがとうございました!!

0 投票する
3 に答える
6621 参照

grails - アップグレード後に Grails Quartz Job に Hibernate セッションがないため、LazyInitializationException が発生する

Grails 1.0.4 アプリケーションを 1.1.1 にアップグレードしました。アップグレード後、Quartz ジョブを実行すると例外が繰り返し発生します (Quartz プラグイン 0.4.1 を使用)。プラグインは、サービスを介して Simple および Cron Triggers を使用してジョブを手動でスケジュールするために使用されます (以下の言い換えコード)。

私の BatchJob ジョブは次のように設定されています。

Batch.groovy (ドメイン) の簡略化された定義は次のとおりです。

ただし、schedulerService.schedule()既存の保存されたバッチで呼び出されると、次の例外が発生します。

これを修正するために次のアクションを試みましたが、どれもうまくいきませんでした:

  • static fetchMode = [batchStatus: 'eager']Batch ドメイン クラスで指定しました
  • static mapping = { columns { batchStatus lazy:false }}Batchドメインクラスで使用しました
  • ジョブbatch.attach()を呼び出した後に使用してみましたBatch.get()

BatchJob.triggerNow()これはいくつかの例の 1 つにすぎないため、このインスタンスでは使用できません。他のものはサービスによってスケジュールされていますが、cron ジョブまたはその他の方法でスケジュールされている可能性があります。Grails をアップグレードするときに、Quartz プラグインもアップグレードしたことは言及しておく必要があります。以前の Quartz バージョンは 0.4.1-SNAPSHOT でした (アップグレードされたバージョンでは 0.4.1 だけでした)。

これらの手動でトリガーされた Quartz ジョブで Hibernate セッションを正しく動作させるにはどうすればよいですか?

私はこの質問を grails-user メーリング リストにも送信しました。このようなよりニッチな問題については、メーリング リストがもう少し多くの反応を引き出しているようです。そこから出てきた場合は、この質問を回答で更新します。ここにリンクがあります。

0 投票する
1 に答える
762 参照

grails - 多くの休止状態セッションを開いたままにするGrailsのSpringWebflow

Grails 1.1.2で実行されているインターネットアプリがあり、SpringWebFlowメカニズムが統合されています。問題は、robots.txtを無視し、フローに頻繁に入るボットがいることです。

フローの2番目のステップには人間の知性が必要なため、ボットは最初のステップの後にフローを開いたままにします。これにより、多くのオープンフローが発生し、多くの放棄されたオープン休止セッションにつながります。

Grails + Spring WebFlowでのこの種の無人フロー(および休止状態セッション)の一般的なクリーンアップメカニズムを知っていますか?

ありがとう、パベル

0 投票する
4 に答える
10456 参照

grails - HibernateセッションをGrailsのスレッドにバインドするにはどうすればよいですか?

Grailsでマルチスレッドアプリケーションを作成していますが、追加のスレッドはGORM/Hibernateにアクセスする必要があります。彼らがGORMにアクセスしようとすると、「org.hibernate.HibernateException:スレッドにバインドされたHibernateセッションがなく、構成ではここで非トランザクションセッションを作成できません」というエラーが表示されます。

十分に公平です。誰かがスレッドをアクセスできるように設定するための最良の方法を教えてもらえますか?エラーメッセージは、いくつかの設定オプションを変更する必要があるように聞こえますが、私は感じています、それはそれほど単純ではありません...

0 投票する
4 に答える
47604 参照

java - Hibernateのセッションスレッドは安全ですか?

Hibernateのセッションがスレッドセーフであるかどうかを知る必要があります。しかし、明らかに、実行のためにすべてのスレッドに新しいセッションがアタッチされます。しかし、私の質問は、あるスレッドでエンティティの値を更新した場合、それは同時に実行中に他のスレッドに反映されるのでしょうか?

私の問題は、2つのスレッドから順番に更新を実行すると、値が適切に更新されますが、更新をほぼ完全に実行すると失敗します。

たとえば。テーブルの現在のステージ。

私は次のことをしようとしています:

上記のコードをループ、たとえば10で実行しようとすると、テーブル「student」の「marks」の値が適切に更新されます。つまり、値が適切な64に更新されます。

しかし、スレッド環境で同じコードを実行しようとすると、悪い結果になります。

0 投票する
1 に答える
1114 参照

hibernate - Hibernate セッションの Spring Config

こんにちは、Spring のインジェクションを通じて休止状態のセッションを取得しようとしています。

ここに私の春のコンテキストxmlがあります:

コードは次のとおりです。

ただし、取得したセッションは null です。

sf.getObject().getCurrentSession() で Session を取得するのは正しいですか?

ありがとう :)

0 投票する
4 に答える
2136 参照

java - すべてのsaveOrUpdateメソッドをtry-catchで囲む必要がありますか?

以下のようなtry-catchブロックでDAOのsaveOrUpdateまたはdeleteを常に囲む必要がありますか?Session

0 投票する
2 に答える
6284 参照

hibernate - Hibernateセッション/トランザクションエラーをデバッグするための良いアイデアはありますか?

私はしばらくの間Hibernateを使用しており、一般的なエラーメッセージのほとんどに慣れています。ほとんどの人が私に問題を直接指摘しますが、私はこれに問題を抱えています:

エラーは理解していますが(セッションには同じIDを持つ2つの異なるオブジェクトがあります)、コードをデバッグして問題の原因を見つける良い方法がわかりません。通常、私は現在変更しているコードを見て、ロジックに単純なエラーが見つかることを期待して、あるオブジェクトをロードして別のオブジェクトを手動で作成する場所を探します。しかし、私は現在、自分が書いたものではなく、なじみがなく、ドキュメントがないコードセットを使用しています。私が考えることができる唯一の解決策は、エラーを見つけることを期待して、コードを1行ずつ調べることです。このエラーをデバッグするためのより良い方法を知っていますか?

さらに、私が得ている正確なエラーは、への呼び出しからのものであり、それがいつ呼び出すべきかをsaveOrUpdate()呼び出しているのかどうか疑問に思います。デバッグの目的で、Hibernateが現在のセッションにあるオブジェクトを確認する方法はありますか?save()update()

0 投票する
1 に答える
745 参照

java - generic-hibernate-dao ライブラリを使用してスレッドにバインドされた Hibernate セッションがありません

Spring 3.0.5、Hibernate 3.3、generic-hibernate-dao を使用しています。以下のように Hibernate SessionFactory を構成しました。

BaseDAOImpl を作成し、以下のようにドメイン DAO で拡張しました。

スプリング コントローラーにアクセスすると (を呼び出してdao.findAll())、次のエラーが発生します。