問題タブ [jpa]
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.
java - 列挙型のJPAマップコレクション
JPAにEntityクラス内の列挙型のコレクションをマップする方法はありますか?または、唯一の解決策は、列挙型を別のドメインクラスでラップし、それを使用してコレクションをマップすることですか?
私はHibernateJPA実装を使用していますが、もちろん実装に依存しないソリューションを好みます。
java - 永続性のために継承されたプロパティに注釈を付ける
私が次のようにクラスAを持っていると仮定します。
そして、クラスBは次のとおりです。
Aから継承されたIDフィールドに注釈を付けて、Hibernate / JPAがそれがエンティティのIDであることを認識できるようにするにはどうすればよいですか?Aのフィールドに@Idを配置しようとしましたが、うまくいきませんでした。Aもエンティティにしてみましたが、これもうまくいきませんでした。
web-applications - JBoss 上の EJB 3.0、JPA、動的 Web プロジェクトを使用した Java EE アプリケーションのプロジェクト アーキテクチャ/組織
さまざまな動的 Web プロジェクトを持つ Web アプリケーションがあり、それぞれに一般的に EJB プロジェクトが含まれています。JNDI を介して互いの EJB から Bean とクラスを使用したり、同じデータベースを共有したり、独自のデータベースを使用したりするなど、それらの相互作用を維持したいと考えています。しかし、異なるサーバーに異なるプロジェクトを保持できるようにしたいとも考えています。
アーキテクチャと組織の観点から、この種のプロジェクトの適切な焦点は何ですか?
EAR をどのように使用する必要がありますか? それらすべてを支配し、暗闇の中でそれらを縛る1つのEAR? (申し訳ありませんが、その LOTR 参照を行う必要がありました)、またはサーバー/Web プロジェクトごとの EAR などですか?
java - JPQLにそんなCASE式ってあるの?
テーブルがあるとしましょう:
および関連する JPA エンティティ クラス
この SQL に緩やかに変換された JPQL ステートメントを作成する方法、つまり case 式を JPQL に変換する方法はありますか?
java - StaleObjectStateException エラー
誰でも私にエラーを指摘できますか?
注: これは、実際のアプリから抽出した単純化されたテスト ケースです。したがって、3 つのエンティティ マネージャと em1.getTransaction().begin(); の奇妙な使用法。em1.clear(); em1.close(); 各セクションの終わりに。実際のアプリでは、さまざまなタイミングで発生します。HibernateUtil は基本的にチュートリアルからコピーされます。
javax.persistence.OptimisticLockException: org.hibernate.StaleObjectStateException: 行が別のトランザクションによって更新または削除されました (または保存されていない値のマッピングが正しくありません): [WebOrganizer.classes.types.StringType#174] at org.hibernate.ejb.AbstractEntityManagerImpl. org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:600) で wrapStaleStateException(AbstractEntityManagerImpl.java:646) WebOrganizer.web.servlets.TypeServlet で org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:237) で.test2(TypeServlet.java:356)、sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド)、sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)、sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ) Java で。lang.reflect.Method.invoke(Method.java:597) org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:580) org.testng.internal.Invoker.invokeMethod(Invoker.java:517) org .testng.internal.Invoker.invokeTestMethod(Invoker.java:669) で org.testng.internal.Invoker.invokeTestMethods(Invoker.java:956) で org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126) でorg.testng.internal.TestMethodWorker.run(TestMethodWorker.java:110) org.testng.TestRunner.runWorkers(TestRunner.java:720) org.testng.TestRunner.privateRun(TestRunner.java:590) org.testng .TestRunner.run(TestRunner.java:484) で org.testng.SuiteRunner.runTest(SuiteRunner.java:332) で org.testng.SuiteRunner.runSequentially(SuiteRunner.java:327) で org.testng.SuiteRunner.privateRun( SuiteRunner.java:299) org.testng.SuiteRunner.run(SuiteRunner.java:204) org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:864) org.testng.TestNG.runSuitesLocally(TestNG.java:830) org.testng.TestNG.run (TestNG.java:748) org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73) で org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:124) で sun.reflect.NativeMethodAccessorImpl.invoke0( Native Method) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で java.lang.reflect.Method.invoke(Method.java:597) でcom.intellij.rt.execution.application.AppMain.main (AppMain.java:90) でrunSuitesLocally(TestNG.java:830) at org.testng.TestNG.run(TestNG.java:748) at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73) at org.testng.remote.RemoteTestNG.main (RemoteTestNG.java:124) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) でjava.lang.reflect.Method.invoke(Method.java:597) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)runSuitesLocally(TestNG.java:830) at org.testng.TestNG.run(TestNG.java:748) at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:73) at org.testng.remote.RemoteTestNG.main (RemoteTestNG.java:124) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) でjava.lang.reflect.Method.invoke(Method.java:597) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で java.lang.reflect.Method.invoke(Method.java:597) で com.intellij.rt.execution .application.AppMain.main(AppMain.java:90)NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で java.lang.reflect.Method.invoke(Method.java:597) で com.intellij.rt.execution .application.AppMain.main(AppMain.java:90)
原因: org.hibernate.StaleObjectStateException: 行が別のトランザクションによって更新または削除されました (または、保存されていない値のマッピングが正しくありませんでした): [WebOrganizer.classes.types.StringType#174] at org.hibernate.event.def.DefaultMergeEventListener.entityIsDetached (DefaultMergeEventListener.java:261) org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:120) org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:53) org.hibernate. org.hibernate.impl.SessionImpl.merge(SessionImpl.java:661) の impl.SessionImpl.fireMerge(SessionImpl.java:677) org.hibernate.impl.SessionImpl.merge(SessionImpl.java:665) の org.hibernate .ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:228) ... 28 もっと見る
java - 接続リストの最後のエントリを見つける JPA クエリを解決する
次のクラス構造が与えられます。
このクラス構造は、JPA を介してデータベースにアクセスできます。DAO 層では、JPA 構文でクエリを記述できます。
問題:特定の ID を持つ特定の所有者のエントリと、ジョブの最後の所有者Job
( assignDate 順) のリストが必要です。非常に複雑に聞こえますが、おそらくもっと単純です。すべてのジョブを指定し、指定された所有者がジョブの実際の所有者です。JobHistory
Jobhistory
JobHistory
更新:わかりやすくするために、クラスの名前を少し変更します。
EveryJob
には、 でソートされた所有者の履歴がありassignDate
ます。実際の所有者は、最後に割り当てられたジョブ (つまりMAX(assignDate)
) を取得しました。特定のユーザーのJobOwnerHistory
エントリをすべてのジョブで検索したい。MAX(assignDate)
User
java - Hibernate が MySQL で無効な SQL クエリを生成する
次の JPA エンティティ クラスがあります (例)。ハウスは 1 つのストリートに属します。通りには多くの家があります。
生成タイプを ID に設定しています。これは、新しい ID を自動的に割り当てることになっています。
新しい Street を持つ新しい House を作成するときは、最初に Street を作成して保持し、次に House を作成する必要があります。これは、CascadeType を PERSIST に設定していないためで、手動で行う必要があります [1]。ただし、新しく作成されたストリートを挿入する際:
Hibernate/JPA は次の SQL クエリを生成します。
これは MySQL が好まないものです。
理由はありますか?私は Java 6、MySQL 5.0.67 を Hibernate の JPA (バージョン 3.2.1.ga) の実装と共に使用しています。
[1] EJB 3 in Action ページ 318-319
json - Struts2 JSON プラグインが「遅延」データで機能しない
遅延フェッチされる OneToOne 関係を持つエンティティがあります。
これは、 JSONPlugin (Struts 2 の「公式」json プラグイン) のJSONUtil クラスを使用して、すべてのエンティティを取得し、それらを JSON としてシリアル化しようとする、私が行うテストです。
そして、これは私が得る例外です (このプラグインを Struts2 アクションと @JSON アノテーションで使用した場合と同じ例外です):
私は Hibernate を使用しており、fetch=FetchType.EAGER を変更すると上記と同じコードが機能します。遅延読み込みはプロキシオブジェクトを生成し、それが失敗すると思います。
私の質問は:遅延ロードされた属性を含むオブジェクトをシリアル化することは可能ですか?
java - JPA/EJB3 を使用したバッチ挿入
JPA/EJB3 フレームワークは、バッチ挿入操作を行う標準的な方法を提供していますか? 永続化フレームワークに hibernate を使用しているため、Hibernate Session にフォールバックし、session.save()/session.flush() の組み合わせを使用してバッチ挿入を実現できます。しかし、EJB3 がこれをサポートしているかどうかを知りたいです...
java - JPAJavaコード生成
特にJPAコード生成手法を探しています
まず、プロジェクトがJPA準拠のコードを生成できるのは何ですか?(例:HibernateTools)
次に、コード生成ユーティリティもカスタマイズしたいと思います。これは、企業標準に準拠している必要があるためです。
そうでない場合、リフレクションを使用してJavaコードを生成するために利用できるすべてのフレームワークは何ですか?だから私は一から書くことができます。
注:Eclipseを使用してJPAコードを生成し、それを繰り返しリファクタリングして準拠させました。