問題タブ [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.
hibernate - Hibernate EntityManager + JOTM: トランザクションは使用されません
JOTM と Hibernate EntityManager を統合して、EJB をトランザクション方式の環境でコンテナの外でテストしようとしています。
私のテストは次のようになります。
- JOTMを開始
- JOTM の UserTransaction を JNDI に入れる
- StandardXADataSource を作成して構成する
- DataSource を JNDI に入れる
- 休止状態を構成し、EMF を作成する
- EM を作成する
- 取引を開始する
- EMで取引に参加する
- エンティティを保存する
- 保存されていることを確認する
- トランザクションをロールバックする
- データベースでレコード数を確認する
- すべてを壊して
私のコードは次のようになります: http://pastebin.com/m22a9f6b
ログ出力は次のとおりです。 http://pastebin.com/m6da9383a
テストはステップ 12 (行 121) で失敗します。
ご覧のとおり、トランザクションをロールバックしたにもかかわらず、DB にレコードがあります。まったく使用されず、レコードがデータベースに到達したトランザクションのようです。
これがどのように発生する可能性があり、それを修正する方法はありますか?
hibernate - 1つのEntityManager(Hibernate)が複数の同時トランザクションに参加できますか?
1つのEntityManagerが複数の同時トランザクションにスムーズに参加できる方法はありますか?
まあ、それは同時ではありません。何かのようなもの:
- tx1を開始します
- tx1で何かをする
- tx2を開始します
- tx2で何かをする
- tx2をコミットする
- tx1に戻る
- tx1で何かをする
- tx1をコミットする
ステップが1つずつ続き、重複していません。
hibernate - Hibernate とのトランザクション競合を検出する方法は?
hibernate-entitymanager で Hibernate 2.6 を使用しています。オブジェクトで 2 つのトランザクションが競合する状況をキャッチして処理しようとしています。何が起こるかは次のとおりです。
2 つのスレッドが @Version フィールドを持つ単一のオブジェクトを更新しています。コミット競合を失ったスレッドは、フラッシュ時に StaleObjectStateException をログに記録します。例外はスローされず、ログに記録されるだけです。その時点で、トランザクションはロールバックのみとマークされていると思います。
その後、スレッドがコミットを実行しようとすると、RollbackException で失敗します。トランザクションがロールバックされる理由をコードで見つける方法が見つかりませんでした。
コードでそのような状況をキャッチして処理する方法はありますか? 基本的には StaleObjectStateException をキャッチしたいのですが、問題はスローされないことです。
更新:鳥瞰図から達成しようとしているのは次のとおりです。
JBoss で J2EE アプリケーションを実行しています。内部タイマーによって呼び出されるサービスと、UI から呼び出されるサービスがいくつかあります。また、重要なエンティティが 1 つあります。データの不整合が発生する可能性があるため、異なるスレッドがそのエンティティ クラスのオブジェクトを同時に更新できないようにする必要があります。これが、私が楽観的ロックを実装している理由です。
楽観的ロックの問題が発生した場合、私はこの状況を一般的に処理しようとしています。私はそれを非常に高いレベルでキャッチし、有効なユーザー メッセージを表示したいと考えています (私の場合、最高レベルは RestEasy の ExceptionMapper です)。問題は、RollbackException をキャッチした時点ですでに手遅れであることです。
手動でフラッシュしません。ほとんどの EJB は CMT を使用しており、セッションは自動的にフラッシュされます。
mysql - hibernate、mysql、glassfish v3、および JTA データソース
mysql と glassfish で hibernate エンティティ マネージャーを使用しようとしています。JTA データソースを使用しようとすると、次のエラーが発生します。
これが私のpersistence.xmlの設定方法です
ただし、非 jta データソースを構成すると、正常に動作します
それはすべてうまくいっていますが、私は本当に使いたいです:
それ以外の:
休止状態の構成で何か不足していますか、それとも JTA データソースを使用することは可能ですか?
hibernate - Spring、Hibernate、EntityManager、およびクラスの継承
私はSpringとHibernateにかなり慣れていません。私たちのチームでは、プレゼンテーション レイヤーに Struts 2 を使用し、その下に Spring 3 と Hibernate 3 (注釈付き) を使用して Web アプリケーションを構築しています。CRUD 操作にDAO を使用するかどうか、および を使用するか、または を使用するかについては、まだ議論Session
中です。EntityManager
どちらが優れているかという問題はさておき、 を使用して別の問題に遭遇しましたEntityManager
。
Service
私の目標は、保存、削除、ID による検索、およびクラスによるすべての検索の 4 つの基本操作を公開する抽象 (ジェネリック) を作成することです。他のサービスはこれを継承し、カスタムの検索または更新を実装するだけです (これは将来変更される可能性があります)。問題は、注釈付きの をどこに置くべきかわからないことですEntityManager
。私の、つまりPerson の親からAction
を継承する Bobからサービスで save() を呼び出すと、サービス パーソンが呼び出されておらず、注釈が解析されていないため、システムは の注入に失敗することを理解しています。save()
Service
EntityManager
@PersistenceContext
この問題を回避する方法はありますか? 簡単な操作に必要なコードの量を削減できるため、サービスに継承を使用したいと考えています。
hibernate - JPA2 + Hibernate + オーダーバイ
( Hibernate と JPA2 Criteria Builder を使用して) エンティティ メンバーではなくメソッドの結果で注文することは可能ですか?
私が達成したいのは、の結果による順序ですgetEvaluatedValue()
。それは可能ですか?
@Formular は使っていませんが、
私はプレーンな JPA2 ですが、確かに動的データで注文する機会はありません。しかし、if-else などのステートメント (QueryBuilder で定義) を使用して order-by ブロックを指定することは許されるかもしれませんね。
jpa - トランザクション内の複数のエンティティ マネージャ
JPA EntityManager API を使用して、あるデータベースから別のデータベースにデータを移動するアプリケーションを作成しています。私の質問は: 1. 1 つのトランザクションで複数のエンティティ マネージャーを使用できますか? 2. 1 つのデータベースからエンティティを読み取り、それを別のデータベースに永続化できますか? どのような問題が発生する可能性がありますか?
hibernate - 宣言されたメタモデル属性は正常に機能しますが、継承されたメタモデル属性は NULL です。なんで?
次のテストを実行できません:-
行で NullPointerException をスローしproject.get(Project_.lifeCycle)
ます。なんで?
PersistenceEntityBase.java
}
Project.java
}
EntityLifeCycleImpl.java
}
PersistentEntityBase_.java (Hibernate Metamodel Generator を使用して生成)
Project_.java
EntityLifeCycleImpl_.java
persistence.xml (関連部分のみ)
編集: hibernate-entitymanager.3.6.0.Final と hibernate-jpamodelgen.1.0.0.Final を使用します。
EDIT 2
@Pascal
Hibernate EM 3.6.0.Final では、レベル@Embedded
で注釈付きフィールドを定義できると思い@Entity
ますが、レベルでそのようなフィールドを拒否し@MappedSuperclass
ます。あなたは何を言っていますか?
ここに「ファイル アップロード オプション」が表示されないため、esnips アカウントに TestCase をアップロードしました。maven ベースのプロジェクトをダウンロードSingularAttributeTest.java
して実行します。そして、コンソール出力をチェックアウトします
「 Download embedded-singular-attribute.zip 」リンクをクリックして、ダウンロード マネージャーをインストールせずにファイルをダウンロードします。( をクリックDownload link with Green arrow
すると、ダウンロードマネージャーをインストールする必要があります!!)
java - Spring + EntityManagerFactory+Hibernateリスナー+インジェクション
簡単な質問があります。@Ressourceまたは@Autowiredを介して依存性注入をHibernateEventlistenerに追加することは可能ですか?
entitymanagerfactoryの構成を示します。
現時点では、jpa.propertiesを介してリスナーを登録しています。
しかし、この場合、リスナーにスプリングインジェクションはありません。解決策を見つけましたが、これはentitymanagerではなくsessionFactoryを使用します。または、コンテキストでsessionfactoryを変更できますか?うまくいけば、誰かがこの問題に対処するための素晴らしいアイデアや解決策を持っています!
本当にありがとう!
java - entity-manager がある場合、セッション オブジェクトを取得するにはどうすればよいですか?
私は持っている
entitymanager を使用している場合、セッションを取得するにはどうすればよいですか? または、切り離された基準から結果を取得するにはどうすればよいですか?