問題タブ [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.
java - hibernate session.get return null
私はそのようなコードを持っています:
最初の行はnullを返します。
2番目は有効なレコードを返します。
しかし、場所を変更した場合:
両方の行が正しい結果を返します。
これは私の休止状態のセッションファクトリです:
なぜsession.get(User.class, (long) 10))
nullを返すのですか?
Hibernate構成の更新:
User.java
基本エンティティからのIDフィールド
UPDATE 2
問題は、ロールをnullにできないことを指定したマッピングファイル@JoinColumn(name = "Role", nullable = false)
private Roles role;
にあり、ID10で取得しようとしたレコードにnullのロール外部キーがあります。だから私は変更 nullable = true
し、それは動作します。
java - Hibernate自動バージョン管理が機能しない(Springを使用)
Hibernateの自動バージョン管理を使用しようとしていますが、セッションの更新メソッドfが呼び出されたときに、クエリのwhere句にバージョンフィールドが表示されず、データベースでバージョンがインクリメントされません。私はおそらく根本的に間違ったことをしているのですが、何ですか?sesssionFactoryのgetCurrentSessionの呼び出しは問題ですか?
私は次のエンティティクラスを持っています:
私のコントローラー:
DsXCT_Recallsのコレクションを取得して、ユーザーに表示します。コレクションはコントローラーに保存されます。次に、ユーザーは1つ以上のエンティティのステータスを変更し、recallManagerのsaveRecallsメソッドを呼び出します。このメソッドは、変更されたエンティティのみのリストを作成します(コントローラーに格納されているコレクションと比較して)。
RecallsManager(サービスレイヤー)は次のとおりです。
DAOのsaveAllメソッドは、変更されたエンティティによる休止状態セッションの1つの更新メソッドを呼び出します。
spring - getcurrentsession での nullpointer 例外
Hibernate 4.1 を Spring 3.1.3 と統合しようとしています。
これは私のモデルクラスです
以下は私のDAOクラスです
私のテーブルにはID、名、姓の3つの列があります
これはメインクラス(Client.java)です
今私の問題は、client.javaを実行しようとするたびにnullpointer例外が発生することです
EmployeeDAO クラスの。
現在、テーブルが空で、レコードを追加しようとしています。私が犯した正確な間違いは何ですか。ばかげたものがあるはずだと確信しています。誰かがそれに光を当てることができますか?助けてくれてありがとう!
hibernate - hibernate 名前付きクエリ xml マッピング
<query..>
Car.hbm.xml に入れた場合、返されるセッション(Session) HibernateUtil.getSessionFactory().getCurrentSession();
は null です。xml マッピング ファイルからクエリを削除すると、セッションは null ではなくなります。なぜこのエラーが発生するのですか? 私は本当にその種の問題で立ち往生しています。
このxmlマッピングを取得しました:
そして、これは私が名前付きクエリを呼び出したい場所です:
java - Hibernate:トランザクションのコミット時に自動セッションをクリアすることは可能ですか?
私にはたくさんの別々の関数があり、それらのそれぞれのtransaction.commit()でsession.clear()を実行して、一種のメモリを解放する必要があります。
私は間違っているかもしれませんが、hibernateのsession.clear()はtransaction.commit()のデフォルトでは呼び出されないと思います。
session.clear()を実行せずに、transaction.commit()ごとに自動セッションクリアを実行するようにhibernateを構成できる方法があるかどうかを知りたいですか?
上記の問題に対する他の解決策をいただければ幸いです。
hibernate - 休止状態のセッション モードがデフォルトで手動に設定されている
MySQL 5.5データベースに接続すると、正常に機能する(データの挿入と読み取り)単純なSpring MVC - Hibernateアプリケーションがあります。同じアプリケーションを Oracle 10g に接続すると、データベースからレコードが読み取られましたが、レコードを挿入できませんでした。
デバッグ時に、セッションの flushMode が MANUAL であることがわかりました。レコードを保存した後に明示的に session.flush() を記述したところ、両方のデータベースでコードが正しく機能し始めました。
私の問題- Hibernateのドキュメントからわかるように、デフォルトのフラッシュ モードは AUTO です。コードで手動に設定していませんが、どういうわけか設定されています。これを制御する方法は?
Spring 3.1.1 と Hibernate 3.5.6 を使用しています。以下は私の root-context.xml と servlet-context.xml ファイルです。
サーブレット-context.xml:
root-context.xml:
詳細が必要な場合はお知らせください。
ありがとう。
hibernate - session.close() 接続後、データベースとの接続がまだアクティブです
私はスイングと休止状態で作業しています。現在、接続を取得するために、を使用してsessionFactory.openSession()
います。DB アクティビティを完了したら、同じセッションを で閉じsession.close()
ます。問題は、アプリケーションを使用し続けると、いくつかの呼び出しの後、アプリケーションが例外をスローすることです
アプリケーションを使用している間、次のクエリを使用してアクティブな DB 接続を監視します
接続数が増加していることがわかり、いくつかの接続の後、DB は新しい接続の提供を停止します。
休止状態を使用してDBとの接続を閉じる方法がわかりません。そうするのsession.close()
は役に立ちません。
hibernate - Hibernate セッションを適切に閉じて開く方法は?
数秒ごとに大量のレコードを挿入する次のメソッドがあります。しばらく実行すると、次のようなエラーが発生します。
エラー: 通信リンク障害
サーバーから正常に受信された最後のパケットは 523 ミリ秒前です。サーバーに正常に送信された最後のパケットは 8 ミリ秒前です。
2013 年 5 月 16 日 9:48:30 AM com.mchange.v2.c3p0.stmt.GooGooStatementCache checkinStatement 情報: チェックインされたステートメントに問題があり、破棄しています。
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: ステートメントが閉じられた後、操作は許可されません。
接続を開閉するために使用するコードは次のとおりです。
c3p0 接続プーリングも使用しています。私の構成は次のようになります。
接続の開閉が間違っていますか? このエラーが発生してプログラムが停止するのを防ぐために何を変更できるか教えてください。
java - アクティブなSpringトランザクション内でデータをdbにフラッシュする方法は?
春のテスト フレームワークを使用して、休止状態セッションの save() メソッドをテストしたいと考えています。@Test メソッドは次のとおりです。
ユーザーをデータベースにフラッシュしたい。このメソッドの後にユーザーをデータベースに入れたい
次に、Spring Data Framework を使用してデータベースに移動し、この保存されたユーザーを次の行で取得します。
次のような休止状態のフラッシュメソッドを使用しようとしました:
ユーザーをデータベースにフラッシュしません! ただし、 @Transactional スプリング アノテーションを使用せず、ユーザーをプログラムによるスプリング トランザクションに保存すると、必要なことが達成されます。残念ながら、スプリング@Transactionalがないため、dbに保存されたユーザーはロールバックされません。したがって、私のテスト メソッドは、後続のテスト メソッドのデータベースと動作を変更します。
したがって、ユーザーをテストメソッド内で(最後ではなく)dbにフラッシュし、テストメソッドの最後ですべての変更をdbにロールバックする必要があります。
次のようにメソッドを準備するためのUPDATE提案:
また、testSave 内で doSave を呼び出しても何も実行されません。このメソッドを実行した後でも、データベースにユーザーがいません。ブレークポイントを設定し、コマンドラインからデータベースをチェックします。
更新返信ありがとうございます。問題は、メソッド flush() がユーザーをデータベースに配置しないことです。Isolation.READ_UNCOMMITTED を試しましたが、ユーザーがデータベースに配置されません。@Test メソッドでスプリング トランザクションをオフにして、プログラムによるトランザクションで保存を行う場合にのみ、必要なことを達成できます。しかし、その後 @Test メソッドはロールバックされず、保存されたユーザーを後続の @Test メソッドに残します。ここで、ユーザーを保存する @Test メソッドは、ロールバックされないため、ユーザーを削除する @Test メソッドほど危険ではありません。したがって、@Testメソッドのトランザクションサポートが必要であり、とにかくユーザーをdbに入れる(または削除する)ことはできません。実際には、@Test メソッドが終了し、@Test メソッドのトランザクションがコミットされた後にのみ、ユーザーが db に配置 (または削除) されます。したがって、 @Test メソッドの途中でユーザーを db に保存し、 @Test メソッドの最後にロールバックしたい
ありがとうございました!