問題タブ [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 投票する
2 に答える
13396 参照

java - Hibernate の session.createSQLQuery() を使用して JOIN を使用する方法

従業員とプロジェクトの 2 つのエンティティ (テーブル) があります。従業員は複数のプロジェクトを持つことができます。Project テーブルの CREATOR_ID フィールドは、Employee テーブルの ID フィールドを参照します。Employee エンティティは Project の参照を保持していませんが、Project エンティティには Employee の参照があります。

EntityManager 次のクエリを使用すると正常に動作します -

しかし、LAZY アソシエーション関係があるため、エラーが発生します。

プロキシを初期化できませんでした - セッションがありません

Employee エンティティからプロジェクト情報にアクセスしようとすると。これは予想されることなので、以下に示すように、Hibernate のセッションを使用してクエリを作成しています。

しかし、次のようなエラーが表示されます。

そのような場合に正しい JOIN 構文を提案できる人はいますか? 私が使用する("SELECT * FROM EMPLOYEE_TAB E, ........")と、他のエラーが発生します:

java.lang.ClassCastException: [Ljava.lang.Object; com.im.server.dto.EmployeeDTO にキャストできません

.

前もって感謝します。

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

hibernate - データベース全体を消去する Persistence.createEntityManagerFactory

現在、Hibernate + JPA を使用するプロジェクトに取り組んでいます。プロジェクトで何を変更したか正確には覚えていませんが、新しい EntityManagerFactory をインスタンス化しようとするたびに、データベースからすべてのデータが消去されます。

コード スニペットは次のとおりです。

「Persistence.createEntityManagerFactory("hibernatePersistence")」を含む行で、データベース全体がクリアされます。

この問題を解決するためのあらゆるアイデアを使い果たしました...皆さんが助けてくれることを願っています.

前もって感謝します!

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

java - HibernateSessionFactoryとJPAEntityManagerFactory

私はHibernateを初めて使用しますが、Hibernateを使用するかSessionFactoryJPAEntityManagerFactoryを使用してHibernateを作成するかがわかりませんSession

これら2つの違いは何ですか?それらのそれぞれを使用することの長所と短所は何ですか?

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

hibernate - クエリの前に Hibernate Entity Manager が自動フラッシュされ、トランザクション内の DB への変更がコミットされる

Jboss AS 6.0.0 final で JPA 2 で Hibernate 3.6.0 を使用しています。私のEJBには、エンティティ値を更新してそれに対してクエリを実行するメソッドがあります。メソッド全体が BMT トランザクションで実行されます。何かが失敗した場合、すべての変更はロールバックされ、DB にコミットされません。

データベースは mySql です。

JPA クエリを実行する前に、JPA は変更された状態を DB に自動フラッシュして、古いデータが返されないようにします。ただし、私の方法では、自動フラッシュが直接更新して変更を DB にコミットし、その後何か問題が発生したとしても、変更はロールバックされません。それで、私の設定に間違った設定があるのか​​、それともバグなのかを尋ねたいと思います.

EJB

persistence.xml

hibernate.cfg.xml

mysql-ds.xml

さらに調査したところ、フラッシュが発生するたびに、ダーティな変更が書き込まれ、DB に直接コミットされることがわかりました。flush() を削除すると、すべて正常に動作します。ただし、クエリの前にシステムによってトリガーされるフラッシュがあり、必要だと思います。

データベースは自動コミットされているようです。hibernate.connection.autocommitプロパティをに設定しようとしましfalseたが、問題が解決せず、仕様に違反しているという EJB 警告が表示されます。

更新:原因は mysql にあるはずです。mssqlサーバーに切り替えると、問題はなくなります。また、mysqlで試してみましたがxa-datasource、まだうまくいきません...

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

hibernate - 管理されていない環境で休止状態

小さな問題が発生しました。私は常にGenericDAOパターンを使用してWebでHibernateとSpringを使用していましたが、現在は、EJBなどを使用しないGUIアプリにHibernateを使用しています。

私の主な問題は私がこれを持っていたということです

@PersistenceContext(unitName = "persistenceUnit") private EntityManager em;

しかし今、私はこのようにしています:

private EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit"); private EntityManager em = emf.createEntityManager();

私が持っている大きな欠陥に気付いたのは、このGenericDAOクラスを継承するたびに、毎回1つのEntityManagerFactoryを作成しているということです。どうすればよいですか?

編集:

これがそれを解決するための最も良い方法であることに同意しますか?

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

mysql - hibernate commit: ログにコミットされたと表示されますが、実際にはそうではありません

このコードを見てください。Persist は Candidate というテーブルに対して機能し、VerifyLink という別のテーブルに対しては機能しませんが、hibernate はログ ファイルに永続化されていることを示しています。以下のログを見てください。最初のケースでは「候補に挿入」というクエリが表示されますが、2 番目のケースではクエリが表示されません。なにが問題ですか ?

初めて何かをコミットするとき

[#|2011-07-25T12:38:40.020+0530|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=61;_ThreadName=Thread-1 ;|org.hibernate.ejb.EntityManagerImpl@15e3c52|#]

[#|2011-07-25T12:38:40.021+0530|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=61;_ThreadName=Thread-1 ;|ステータス: 0|#]

[#|2011-07-25T12:38:40.093+0530|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=61;_ThreadName=Thread-1 ;|Hibernate: Candidate (comment、creation_date、currentCompany、current_ctc、cv、cv_name、dob、email_id、email_id_verified、expected_ctc、first_name、last_name、location、mobile、notice_period、password、sex、upadte_date、years_of_exp、cand_id) 値 ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)|#]

[#|2011-07-25T12:38:40.164+0530|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=61;_ThreadName=Thread-1 ;|コミット: |#]

[#|2011-07-25T12:38:40.165+0530|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=61;_ThreadName=Thread-1 ;|取引終了:|#]

[#|2011-07-25T12:38:47.158+0530|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=61;_ThreadName=Thread-1 ;|org.hibernate.ejb.EntityManagerImpl@1fd91c4|#]

[#|2011-07-25T12:38:47.159+0530|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=61;_ThreadName=Thread-1 ;|ステータス: 0|#]

[#|2011-07-25T12:38:47.159+0530|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=61;_ThreadName=Thread-1 ;|コミット: |#]

[#|2011-07-25T12:38:47.159+0530|INFO|glassfish3.0.1|javax.enterprise.system.std.com.sun.enterprise.v3.services.impl|_ThreadID=61;_ThreadName=Thread-1 ;|取引終了:|#]

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

java - データベースから削除せずに JPA エンティティをフィルタリングする

再帰構造を許可するために、それ自体 (parent_id) への FK を持つデータベース テーブル "viewmodule" があります。

私の Java アプリケーションは JPA/Hibernate を使用して、そのテーブルのエンティティをマップします。テーブルの「タイプ」列を使用する @Discriminator アノテーションによって解決されるエンティティ階層を修正しました。

私のタスクは、このテーブルからすべての要素を (詳細に) ロードすることですが、フィールド「非表示」が true に設定されているものは除外します。明らかに単純なフィルターメカニズムです。私の最初のアプローチは、Hibernate Filter アノテーションを使用することでした。これは、最初のレイヤー (parent_id = null のすべてのビューモジュール) でうまく機能します。ただし、フィルターは「子」関係では機能しません。(私の実際のモデルでは、ViewModule のさまざまなタイプの継承構造があります)

したがって、viewModule オブジェクト ツリーを再帰的にウォークスルーし、hide=true; を持つ子関係から viewModules を削除する小さな関数を作成しました。

ただし、すべてのオブジェクトはまだ jpa/hibernate entityManager の監視下にあるため、コレクションからのすべての削除は、データベースで削除として直接実行されます。したがって、フィルター関数はデータベースからエンティティを削除しますが、これは悪いことです。

休止状態セッションから「エビクト」メソッドを使用して、フィルタリングする前にエンティティをデタッチしようとしましたが、それは LazyInitialisationException につながります。

だから、私のオブジェクトのすべての複製を防ぐために、私の質問はこの問題を解決する方法ですか? すべてのコレクションが初期化されるようにオブジェクトをデタッチする方法はありますか? または、コレクションをフィルタリングできる特別な Kung-Fu Chuck-Norris JPA アノテーションはありますか?

前もって感謝します

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

java - EntityManager.unwrap()はjava.lang.AbstractMethodErrorをスローします

アプリにJPA2.0を実装する際に問題が発生します。Criteriaクエリを使用しており、EntityManagerからセッションを取得する必要があります。私は次の方法でそれを行います(これによると Session ses = entityManager.unwrap(Session.class);

Tomcat 7.0.8上で実行した後、次のようになります。

また、次のHibernate関連の依存関係を参照しています(問題があると思われる場合)。

これについて何か考えはありますか?

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

java - JPA-createEntityManagerFactoryはNullを返します

ここでNoobの質問。私はこの例/チュートリアルに従って、メインプロジェクトで発生し続ける問題を特定しようとしています。問題は、entityManagerFactoryがnullを返し続けることです(したがって、最初のJUnitテストを実行しようとするとNullPointerExceptが返されます)。

現在、Eclipse Indigo(JavaEE)-JRE7-Hibernate3.6.7およびJBoss7を使用しています。

そして、これが私のpersistence.xmlです(ここでも、チュートリアルから直接コピーパスタを取得しました)

私がこれまでに試した/見つけたもの:

  • この問題は、persistence.xmlにリストされていない永続性ユニットを使用してファクトリを作成しようとすると発生する傾向があるようです。

  • 必要なJARがEclipseのビルドパスライブラリに含まれていることを再確認しました。これは、createEntityManagerFactory()呼び出しが短絡してnullを返す原因である可能性があることをGoogleが示唆しています(例外をスローしたりメッセージをログに記録したりするのではなく)

  • Hibernate接続の構成中に発生した可能性のあるエラーが原因である可能性がありますか?

私は過去数週間この壁にぶつかっていたので、ヘルプ/一般的な方向性のヒントが非常に高く評価されていることは言うまでもありません:D

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

hibernate - Hibernate JPAでEntityManagerを使用して@FilterJoinTableを実行する方法は?

OneToManyリレーションからのデータを制限したいと思います。私のプログラムでは、ボスアカウントは、指定された月と年に注文があるすべての会社を表示できます。会社のクラスは、これらの注文からの収入を数えることができます。@FilterJoinTableを使用しましたが、EntityManagerを使用する必要があるため、もう使用できません。これが、Sessionオブジェクトで使用したコードです。

注文クラス

会社のクラス

getメソッドは次のようになりました

getメソッドは、指定された月と年に注文がある会社のみを返します。各会社のorderListには、特定の月と年の注文のみが含まれています。getメソッドがきれいではないことは知っていますが、機能しました。この問題を解決するにはどうすればよいですか。私は無知です。

JoshuaDavis に感謝します