問題タブ [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 に答える
1004 参照

jpa - JPA2 -- EntityManager.detach はどこにありますか?

JPA2 が Entity Manager の detach メソッド呼び出しをサポートすることをいくつかの場所で読みました。私は Hibernate 3.5.1-FINAL と Spring 3.0.2-RELEASE を Maven の依存関係として実行しています - JBoss リポジトリから取得しました。

これで十分ではありませんか?

おそらく問題は、私の javax.persistence.EntityManager インターフェイス定義にあります。javax を更新する必要がありますか? どうやってこれを行うのですか?

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

xml - アノテーションではなく XML 経由で Entitymanager を注入する

私がやろうとしているのは、@PersistenceContext アノテーションを介して行われるのとほぼ同じ方法で、XML を介して注入することです。同じDAOに注入する必要があるエンティティマネージャーが異なるため、これが必要です。データベースは相互にミラーリングするため、1 つの基本クラスを使用し、その基本クラスのインスタンスに対して複数のクラスを作成して、@PersistenceContext アノテーションを使用できるようにします。

これが私の例です。これは私が今やっていることであり、うまくいきます。

TransactionManagers、EntityManagers は以下で定義されています...

私がしたいことは、クラス ItemDaoImplStore2 または ItemDaoImplStore1 を作成しないことです。代わりに、これらを xml 経由で ItemDaoImpl のインスタンスとして使用したいと考えています。しかし、entitymanager を適切に注入する方法がわかりません。これを「リポジトリ」アノテーションとしてシミュレートしたいと思います。また、永続ユニット名で注入するエンティティ マネージャーを指定できるようにしたいと考えています。代わりに XML を使用して、以下のようなものが必要です。

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

jpa - EntityManagerはflush()で更新されません

Java EJBのEntityManagerは、コンシューマーからのデータを更新しません。

消費者は店にログインし、何かを購入して、自分の買い物履歴を見たいと思っています。彼の最後の購入以外はすべて表示されます。彼がログアウトしてログインすると、表示されます。

私はJPAを使用して、購入/購入(コンシューマーにマップされている)をDBに永続化しました。このセッションからの購入を検出できないようです。

コード:

ヘルプ!?フラッシュはトリックを行いません...

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

java - Hibernate EntityManagerFactory EntityManager

Bean の外部EntityManagerからを作成できますか? EntityManagerFactoryもしそうなら、どうすればいいですか?

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

hibernate - SpringコンテキストでJPAEntityManangerを作成する際の問題

JPAプロバイダーとしてHibernateを使用するJPA/Springアプリケーションがあります。コードの一部では、Spring DIを使用するのではなく、新しい演算子を使用してアプリケーションでDAOを手動で作成する必要があります。これを行うと、@PersistenceContextアノテーションはSpringによって処理されません。

DAOを作成するコードには、entityManagerを次のように設定するために使用したEntityManagerFactoryがあります。

問題は、これを行うと、Hibernateエラーが発生することです。

Springエンティティマネージャのファクトリ構成は次のとおりです。

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

hibernate - Hibernate/Spring フレームワークの TestConnectionOnCheckin c3p0 構成プロパティ

c3p0 の testConnectionOnCheckin プロパティを設定したいと思います。

ただし、休止状態のエンティティ マネージャー Bean 内で c3p0 データソースが作成されているため、これを行うのに問題があります。

<prop key...1> は、休止状態で c3p0 データ ソースを作成するための休止状態の構成キーです。

ただし、c3p0 データソースの testConnectionsOnCheckin プロパティを設定する hibernate 構成キーが見つかりません。

そのような鍵はありますか?そうでない場合は、entityManagers データソースを直接設定する必要がありますか?それを行う前に知っておくべきトリックはありますか?

注: testConnectionsOnCheckout は実行可能なオプションではなく、対応する hibernate 構成キーがあります。

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

java - ejb、javapersistenceentitymanagerを使用した2つのdb接続

私は、1つのslsb、具体的にはslsb内の1つのメソッドを介して2つのdbにアクセスしようとしています。しかし、これは不可能ですか?ストアドプロシージャを変更する以外に、他にできることはありますか?

原因:org.hibernate.exception.GenericJDBCException:接続を開くことができません

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

jpa - Java SEで永続性APIを使用して、繰り返し不可能なクエリ結果を防ぐ方法は?

私はJavaSEを使用しており、永続API(toplink-essentials)を使用してDerbyDBのエンティティを管理する方法について学習しています。注:これは(遠隔教育)大学の仕事ですが、この問題がコースの資料に現れる「宿題」ではありません。

同じエンティティのセットで動作する2つのスレッドがあります。私の問題は、私が試したすべての方法で、1つのスレッドのクエリ結果セット(トランザクション内で実行されるクエリ)内のエンティティを変更して、結果セットが残りのトランザクションで無効になるようにすることができることです。

たとえば、1つのスレッドからこの操作が実行されます。

そして、このメソッドで別のスレッドから中断された場合:

発生する可能性があるのは、スレッド内のスレッドがupdatePrices()再開すると、クエリresultSetが無効になり、販売されたアイテムの価格が、販売されたときとは異なる価格に更新されることです。(ショップは、DBで販売されたアイテムの記録を保持したいと考えています)。同時トランザクションが発生しているEntityManagerため、(同じファクトリからの)スレッドごとに異なるものを使用しています。

(中断された)トランザクション中にクエリの結果が「無効」になるのを防ぐことは(ロックまたはある種のコンテキスト伝播によって)可能ですか?この種のシナリオがJavaEEの目的であると私は考えていますが、私が知りたいのは、JavaSEで実行できるかどうかです。


編集:

VineetとPascalのアドバイスに従う:@Versionエンティティのクラスでアノテーションを使用すると(追加のDB列を使用)、大きなトランザクション(updatePrices())が。で失敗しOptimisticLockExceptionます。ただし、大量のクエリ結果の最後に発生した場合、これは非常にコストがかかります。クエリ(内部updatePrices())に関連する行をロックさせて、内部のスレッドをsellInstrument()ブロックまたは中止して例外をスローする(その後中止する)方法はありますか?これははるかに安いでしょう。(私が理解していることから、Toplink Essentialsには悲観的なロックはありません)。

0 投票する
7 に答える
7215 参照

java - Spring Roo で JUnit テストを使用するには? (EntityManagerの問題)

Spring Roo プロジェクトの JUnit テストを作成しようとしています。テストでエンティティ クラスを使用する必要がある場合、次の例外が発生します。

Spring Aspects JAR は正しく構成されているようです。特に、pom.xmlファイルには次のものがあります。

エンティティ クラスを使用するクラスは、JUnit テストから呼び出されない場合は正常に動作します。エンティティ マネージャが JUnit テストから挿入されるように設定する方法を教えてください。

これが私のテストクラスです(多かれ少なかれ):

これは、例外をスローするのに十分です。FooServiceImpl クラスは Foo の Set を返します。Foo はエンティティ クラスです。このgetFoos()メソッドは、アプリケーションが通常の方法で実行されている場合に機能します。問題は単体テストのコンテキストでのみ発生します。

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

mysql - EntityManager 接続が閉じていることを確認する適切な方法は何ですか?

DAO レイヤーには 19 のメソッドがあり、それぞれが次のバリエーションです。

意味: 各メソッドで、独自のトランザクションを処理し、finally ブロックで閉じます。Jersey アプリをテストしているので、JUnit テストは JerseyTest を拡張します。各テスト メソッドは、Grizzly コンテナーをインスタンス化し、テストを実行してから、コンテナーをシャットダウンします。EntityManagerFactory は、Spring によって注入されます。JPA over Hibernate を使用しています。

MySQL テスト DB への接続を監視していますが、接続は常に高くなっています。1 つのテストだけで、MySQL の "Max_used_connections" 変数を 38 まで実行します。楽しみのために、すべての em.close() 呼び出しをコメントアウトしましたが、テストではまだ 38 の接続を使用しています。

私はHibernateの組み込みの接続プールを使用しています(製品用ではありません、私は知っています)。私はまだある種のインテリジェントなプーリングを期待していました。

EntityManager の処理が間違っていますか? 他にどのように接続を閉じることができますか?