問題タブ [hibernate-entitymanager]

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 投票する
1 に答える
2896 参照

java - JPA EntityManager persist() causing object to appear detached even though an error was thrown

Hi I have a simple DAO with the below function.

The Entity table has a unique constraint on the pair (type,value) and I have a test below:

My first caught error happens as I expect since I know that I'm violating the constraint, the second try/catch shouldn't throw an error as far as i'm concerned, but it does, what I get its this:

So it seems calling persist() on "e" even though it wasn't persisted has caused hibernate to think it's a detached entity.

This is annoying because these functions are getting used by a JSF front end that is dealing with the ConstraintViolation exception, but deliberately holding on to the object so that the user can change one of the fields and try again, and they get the detached entity error.

Is this behaviour a hibernate bug because I don't think it should be doing this really? Is there a way around this at the DAO level so that persist won;t treat my object as detached if it's not actually persisted?

Regards,

Glen x

0 投票する
0 に答える
402 参照

hibernate-entitymanager - javax.persistence.EntityManager の createQuery() が大文字の属性で機能しないのはなぜですか?

理解したい javax.persistence.EntityManager の動作に遭遇しました。

次のようなコードがありました。

次の例外をスローします:プロパティを解決できませんでした: fOO of:行 4 の MyDatabaseTableBE。

私が変更した唯一のことは大文字化でした:

そして、それは例外なく機能しました。

最初のバージョン (2 番目と 3 番目の文字が大文字) が機能しなかったのはなぜですか?

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

java - EntityManagerFactory をビルドできません - Spring と Hibernate

spring アプリケーションを hibernate3 で Glassfish サーバー 3.1.2 にデプロイしているときに、次のエラーが発生します。

これは私の pom.xml です:

これは、src/java/resources/META-INF にある私の persistence.xml ファイルです。

これは、src/main/resources にある私の persistence-context.xml ファイルです。

誰かが問題の原因と解決方法を理解するのを手伝ってくれませんか?

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

database - Hibernate EntityManager persist() とデータベースの往復回数

現在、entitymanager を使用して、このようなコードを使用して、オブジェクト エンティティのリストをデータベースに挿入しています。

そして、これをアプリケーションコンテキストに追加してSQLステートメントを監視すると

コンソールの結果は次のようになります

私の質問はです。このメソッドを呼び出すたびに、データベースとのラウンドトリップが 100 回行われるということですか、それとも 1 回のラウンドトリップしか行われないのでしょうか。

どんな答えや洞察もいただければ幸いです。

ありがとう。

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

spring - Spring 3.1 + Hibernate 4.1 JPA、エンティティマネージャーファクトリが2回登録されています

Spring Framework3.1とHibernate4.1をJPAプロバイダーとして使用しており、完全に機能するように設定されていますが、Webアプリを起動するたびに次の警告メッセージが表示されます。

アプリケーションは問題なく機能しますが、そのような警告メッセージは私を悩ませ、何時間もの検索と調整と実験は私をどこにも導きませんでした。工場名を変更し、構成のチャンクを追加および省略してみましたが、まったく役に立ちませんでした。SpringまたはHibernateの何かが、エンティティマネージャーファクトリを2回初期化しているようです。

参考までに、LocalContainerEntityManagerFactoryBeanのpackagesToScan機能を使用して、persistence.xmlファイルなしでエンティティマネージャーを構成しています。

SpringコンテキストのXMLを次のように整理しましたが、問題は解決しません。

完全を期すために、ここにhibernate.propertiesがあります。

そして、org.springframework.ormとorg.hibernateの両方からの抜粋されたデバッグレベルのログ出力です。14:40:06,911に、EntityManagerFactoryが最初から登録され、その直後にLocalContainerEntityManagerFactoryBeanが最初から最初からやり直しになっていることがわかります。は。

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

spring - Spring + Hibernate + Maven NullPointerException

プロジェクトにテストを追加するのは良い考えだと思いましたが、その過程でどうにかして本当の取引を破ることができました。

JPA (Hibernate) で Spring MVC を使用しています。entityManager を適切にロードできなくなりました:

実行時

すべてが通り抜けます。そこで、組み込みの H2 データベースを使用します。テスト関連のもの (依存関係など) を削除しても、問題は解決しませんでした。

私が正しく理解していれば、Javassist はこの場合のアノテーションを担当します。私の問題は、どこを見続けたらよいかわからないことです。それは本当にUTF8の問題ですか?/classesそして、それがjarファイルだと思ってディレクトリをスキャンしようとするのはなぜですか?

問題に何らかの形で関連している可能性のある他のもののリスト:

  1. 私はEclipseでプロジェクト構成を少しいじってみました(maven、wst用に追加)。この構成をもう一度削除して、違いがあるかどうかを試しました。またmvn package war:war、アプリケーションをローカルの Tomcat にデプロイすることもありました。ここでも同じエラーが発生します。再び正常にmvn test動作します

  2. hibernate-validator と hibernate-entitymanager を最新バージョンに更新しました。ただし、再度ダウングレードすると、問題が残りました。

問題を特定するために必要なその他の情報:

私の root-context.xml の関連部分

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

hibernate - hibernate not-null プロパティが null または一時的な値を参照しています。

この問題はランダムに発生します。プログラムは 1 か月以上正常に機能していましたが、今日クラッシュしました。新しい注文を追加する際、ユーザーはドロップダウン リストから会社を選択できます。次に、新しい注文をデータベースに保存できます。アプリをリロードしたときでも、ほとんどの場合は機能します。エラー コードは次のとおりです。

javax.persistence.PersistenceException: org.hibernate.PropertyValueException: 非 null プロパティが null または一時的な値を参照しています: Mapped.Order.company (odwzorowania.Zlecenie.firma)

Hibernate、JSF 2.1、MySql 5.5、javax.persistence.* の使用

これがコードです(名前はポーランド語から翻訳されています)

注文エンティティ

会社の実体

スタック トレース ( maps.Order.company は、ポーランド語から翻訳された odwzorowania.Zlecenie.firma と同じです)

いくつかの答えを見つけましたが、どれも私の問題に合わないようです。ご覧のとおり、会社と注文の間の双方向の関連付けの両側を更新しています。

編集:翻訳を修正

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

hibernate - トランザクション全体がコミットされた後、Hibernateはフラッシュしますか?

2つのアプリケーションがあります。最初のアプリケーションはwhileループでデータベースに保持され、ループは長い時間(たとえば、10〜15分)後に終了します。ただし、2番目のアプリケーションには、最初のアプリケーションがデータベースに既に保持されているデータが必要です。2番目のアプリケーションは、最初のアプリケーションの終了を待つことができません。最初のアプリケーションの実行が開始された直後に開始されます。 最初のアプリケーションがデータをデータベースとすぐに同期することを期待して、最初のアプリケーションでEntityManager.flush()を使用しました。別のトランザクションにある2番目のアプリケーションがデータの処理を開始できるようにします。

これは機能していません。flush()メソッドの目的は何ですか?問題を解決するにはどうすればよいですか?助けてください !!

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

hibernate - Entity ManagerでHibernate 4.1およびJPA 2.0を使用して、サブエンティティを持つ複数のエンティティを複数のレベルにロードする最適な方法は何ですか?

エンティティマネージャーの実装で Hibernate 4.1.4 を使用しており、非常に満足しています。単一のエンティティまたはエンティティの小さなセット (10 ~ 50 + サブエンティティ) を読み込むと、優れたパフォーマンスが得られ、すべての結合がうまく機能し、双方向です。編集・保存・削除がカンタン!

レポート用に 2500 のエンティティと関連データを読み込み中

サブエンティティとともに数百または数千のエンティティをロードしようとすると、問題が発生します。1 つの例では、2 つの 1 対 1 結合と 3 つの 1 対多結合と共に、約 2500 の基本エンティティがあります。これにより、2500 x 5 +1 クエリが発生します。データベース (DB2) での実行には約 30 秒かかります。

動的クエリとエンティティ マネージャー create query メソッドを使用します。

http://docs.jboss.org/hibernate/orm/4.1/javadocs/

http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html

結合を使用するように Hibernate を誘導しようとしています

私たちの観察では、何を試しても、プライマリ クエリの結合としてサブエンティティのロードを実行するために hibernate を取得できないようです。find メソッドを使用して単一のエンティティをロードし、主キーによって hibernate は結合を使用しますが、複数の基本エンティティがロードされている場合は使用しません。

同じ結果で基準APIを試しました。

クエリで複数のエンティティを取得することに成功

例:

クエリで手動で結合を行い、タプルを介して個々のエンティティを取得することに部分的に成功しましたが、これは注釈付きのエンティティ モデルをバイパスし、推奨される方法ではありません (回避できる場合)。

http://docs.jboss.org/hibernate/orm/4.1/manual/en-US/html_single/#objectstate-querying-executing

タプルで遭遇した問題は、タプルがプライマリ エンティティから切り離されており (注釈付きの関係を介して読み込まれていないため、これは論理的と思われます)、それらを再アタッチする方法がないように思われることです。エンティティのリストに 1 対多のすべてのレコードを手動で追加した後、hibernate がリストの get メソッドにヒットすると、リストのイーガー/レイジー ロードを試行します (リストが既に設定されているにもかかわらず)。

試行された最適化 - データセットのプリロード

私たちが試みたもう 1 つの最適化手法は、事前にデータ セットをプリロードすることでした。すべてのコア エンティティをロードした後、pk のリストを作成し、単一のクエリを起動して、1 対多のデー​​タ セットをすべてロードしました。しかし、hibernate がリスト データのゲッターにヒットすると、セッションで既にプリロードされているものを無視して、リストを熱心/遅延ロードしようとします (おそらくキャッシュを有効にする必要がありますか?)。

提案?

私たちは多くの異なる方向に進んでいますが、ほとんど成功していません。誰かが正しい道を示してくれることを期待しています (または新しい道を示してください!)。

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

java - 同等の基準ビルダー クエリ (EntityManager) への複雑なクエリ

私のクエリはこれです:

query1 = a.id が (:List1) にあるエンティティ 1 a から a.id を
選択し、存在しない (ex2.assignedId = a.id の場合、entity2から
ex2
を選択)
。 entity3Id = pi.id および ex.assignedId in (:List1)
および ex.assignedTypeId = :assignedTypeId および pi.processStatus = :status
であり、存在しません
(ex1.assignedId を entity2 ex1 、entity3 pi1 から選択します。
ここで ex1.entity3Id = pi1.id ex1.assignedId = ex.assignedId
および ex1.assignedTypeId = :assignedTypeId
および pi1.processStatus <> :status);

クエリを実行しようとしている間、

既存の ID をクエリ = em.createQuery(query1); //すべてのパラメータが設定されている

org.hibernate.hql.ast.ParameterTranslationsImpl の 87 行目で NullPointerException をスローします。

すべてのブレースとパラメーターを完全にチェックしました。同等の変換は mysql で機能します。誰かが CriteriaBuilder でクエリを変換するのを手伝ってくれますか?変換が難しいと感じています。