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

java - 遅いデータベース書き込みで正しい結果を保証する方法 (JTA および EntityManager )

データベースへの書き込みに通常より時間がかかるという問題が発生していました。これらの遅延書き込みにより、書き込み後に実行される論理ブロックが正しくなくなります。サーバーを再起動すると、すべてが正常に機能します。私の懸念は、サーバーが遅れ始めると、この遅延書き込みの問題が再び発生することです。

EntityManager で Java Transaction API (JTA) を使用しています。


必要なときに EntityManager に明示的なコミットを強制するにはどうすればよいですか?

次のコード行を実行する前に、書き込みが完了するまで待つにはどうすればよいですか?

EntityManager は自動コミットしますか? もしそうなら、いつそれをしますか?


em.getTransaction().commit(); を試しました。エラーが発生します: JTA can not use getTransaction

私はいくつかの調査を行い、em.getTransaction().begin(); を使用することになっていないことがわかりました。em.getTransaction().commit(); も、これらの命令は RESOURCE_LOCAL トランザクション タイプで使用されます。私の場合、トランザクションはコンテナーによって管理されます。

コードスニペット:


もし em.persist(ur); Userrole をデータベースにすぐにコミットせず、その後実行されるコードはデータベースから読み取り、その Userroel が存在するかどうかを確認しますが、そのロールはまだ書き込まれていないため、正しくありません。


Persistence.xml

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

hibernate - 同じクラスの @Entity と @MappedSuperclass の両方を削除する

既存のクラスの 1 つ (クラス A) には と の両方@Entity@MappedSuperclass注釈があり、子クラス (クラス B は A を拡張します) には があり@Entityます。

これは正しくありませんが、hibernate-entitymanager 3.3 では問題なく動作しています。両方のエンティティに独自のテーブルがあり、クラス B のテーブルには、クラス A と同じ列に加えて、独自のプロパティに対応する 1 つの追加列があります。

両方の注釈が許可されていないため、3.6 に移行できるように、何年もの間そこにあったこの間違いを修正しようとしています。(投げorg.hibernate.AnnotationException: An entity cannot be annotated with both @Entity and @MappedSuperclass:ます)

置き換えようとしまし@MappedSuperclass@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)が、プロパティの 1 つが B のセットである別のクラスをロードすると、実行時エラーが発生します。

との両方を使用するクラス A を修正し、 と を使用するスムーズな方法は何でしょ@Entity@MappedSuperclassか? 既存のデータを修正するために SQL は必要ですか?@Entity@Inheritance

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

java - #Resolved - クエリに位置パラメーターが存在しない // ストアド関数呼び出し

私は、Java(春)でORACLEからストアド関数を呼び出すこのメソッドを持っています - エンティティマネージャ+ createNativeQueryを使用して..

そして、私がそれをテストしようとするたびに、次のように表示されます: Positional parameter does not exist: 31 in query: {? = call (...) しかし、31 番目の位置に何かありますか..それは存在します..

また、以前の例外で1つの原因でパラメーターを開始しました.1ベースであると言われました.getの代わりに文字列とnull値で試しましたが、結果は同じです..クエリについては、? 何度も、だから私はそれが32(パラメータ用)+ 1(リターン - 最初?)を持っていると確信しています...

誰でも助けることができますか?

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

jsf-2 - Runnable に入れると、EityManager はレコードを削除しません

このサイトで私の質問に対する答えを探しました。しかし、毎ターン失敗しました。これを ExecutorService に入れなければ問題なく削除できますが、入れても削除されません。レコードがまだデータベースにあるだけで、エラーは発生しません。お知らせ下さい。

}

0 投票する
3 に答える
930 参照

java - Spring フレームワークは、EntityManager.merge() を使用してデータベースに保存できません

Spring を使用して Web サイトをセットアップしようとしています。設定したデータベースからデータを読み取ることはできましたが、データベース内の行を更新しようとすると問題が発生しました。merge()の機能を利用していますEntityManager。エラーや例外は発生しません。DB のデータが更新されないだけです。

関連するすべてのコードを提供しようとします。

変更したいエンティティ クラス: DB からのデータを入力することはできたので、問題ないと思います。

Benutzer.java

DAO:そのupdate(Benutzer benutzer)メソッドを使用して、DB内の適切な列を更新しようとしています。

BenutzerDaoImpl.java

そして、コードの一番下にあるupdate(Benutzer benutzer)関数を呼び出す Controller クラス:saveBenutzerdaten()

BenutzerdatenController.java

私はかなり長い間解決策を探していました。また、多くの人が同様の問題を抱えていることも発見しましたが、彼らの解決策はどれもうまくいきませんでした。誰かが問題を見つけてくれることを本当に願っています。かなりイライラし始めます。さらにコードや関連データを表示する必要があるかどうかを尋ねてください。

また、何か変更すべき点があれば教えてください。私はSpringが初めてで、すべてを正しく行っているかどうかわかりません。特に、ログインしたユーザーを処理する方法については (おそらく、DAO オブジェクトにユーザーを保存するのは適切な解決策ではないでしょうか?)。


私は解決策を見つけました。サービス クラスを追加して mvc-dispatcher-servlet.xml に追加すると、問題なく動作しました。(sopro.mvc.swm.service は、サービス クラスがあるパッケージです)。