問題タブ [java-persistence-api]
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 - どのアノテーションを使用する必要がありますか: @IdClass または @EmbeddedId
( JPA
Java Persistence API) 仕様には、エンティティ複合キーを指定する 2 つの異なる方法があります:@IdClass
と@EmbeddedId
.
マッピングされたエンティティで両方の注釈を使用していますが、JPA
.
複合キーを指定する方法を 1 つだけ採用したい。どれが本当に最高ですか?なんで?
jpa - JPA EntityManager: なぜ merge() よりも persist() を使用するのですか?
EntityManager.merge()
新しいオブジェクトを挿入し、既存のものを更新できます。
persist()
なぜ(新しいオブジェクトしか作成できない)を使いたいのでしょうか?
java - Java Persistence APIのFetchType LAZYとEAGERの違いは?
私は Java Persistence API と Hibernate の初心者です。
Java Persistence APIのFetchType.LAZY
との違いは何ですか?FetchType.EAGER
java - リスト内のSpring jpaの基準ビルダー検索
私は著者のリストを持つブッククラスを持っています:
さて、これは私のBookSpecifications
クラスです:
authorId
指定されたものがリストにあることを確認するにはどうすればよいですか?
エラー:
java - 主キーが自動インクリメントの場合、JPA (EclipseLink) を使用して DB から特定の「行」を取得する方法は?
このテーブルがあるとします
過去に私が使用した
ただし、このインスタンスの主キーは自動インクリメントされます。first_name や last_name などの他の列を使用して行を取得し、他の値とともに主キーを取得することは可能ですか?
java - オプションのプロパティを持つ Java 永続性マップ スーパークラス
パッケージを使用しjavax.persistence
て Java クラスをマップしています。
次のようなエンティティがあります。
という名前のマップされたスーパークラスを拡張しますIdEntity
:
スーパー クラスは、すべてのエンティティがバージョン プロパティを継承するように名前が付けられた別のマップされたIdEntity
スーパー クラスを拡張します。VersionEntity
なんで?
これで、すべてのエンティティに対して IdEntity クラスで一般的なクエリを作成できるようになり、次のようになります: (例)
今問題に。
私のエンティティの中created_at
には、 や のようなタイムスタンプを持つものがありdeleted_at
ます。しかし、すべてのエンティティではありません。
これらのプロパティをエンティティ クラスで次のように指定できます。
しかし、私は多くのエンティティを持っているので、タイムスタンプが必要なすべてのエンティティに多くの冗長なコードを配置する必要があります。関連するクラスに何らかの方法でこれらのフィールドを継承させる方法があればいいのにと思います。
IdEntity
考えられる解決策の 1 つは、おそらく名前を付けた並列スーパークラスを作成し、IdAndTimeStampEntity
代わりにタイムスタンプを持つ必要があるエンティティをこの新しいスーパークラスから継承させることですが、同僚の開発者にとっては公平ではありません。一般的なクエリを書く:
そして、一般的なエンティティクエリはそれほど一般的ではなくなります..
私の質問:
all
エンティティを継承id
してversion
フィールドを作成するにはどうすればよいですか?ただし、すべてのエンティティのサブ部分のみがタイムスタンプ フィールドを継承し、クエリを単一のタイプのエンティティに保持しますか?
更新 #1
Bolzano からの質問: 「エンティティのパス (テーブル情報を保持する) を指定するコードを追加できますか?」
UserEntity
これは、a である a を照会する実際の例ですIdEntity
java - @IdClass アノテーションを持つクラスに挿入可能なオブジェクト
Section.class でカスケード保存を行うことは可能ですか? Section オブジェクトを作成し、ID なしで新しい質問を追加します。保存しようとすると、エラーが発生します:
org.postgresql.util.PSQLException: エラー: テーブル "question_to_section" の挿入または更新が外部キー制約 "fk_2br9f09ok965403a9rv5y2n10" に違反しています 詳細: キー (question_id)=(0) がテーブル "question" に存在しません。
@Embedded アノテーションも使用しようとしましたが、失敗しました。
セクション クラス:
セクションクラスへの質問
質問セクション ID
java - 基準 API 結合: java.lang.IllegalArgumentException: 属性を解決できません
JPA基準APIを介して簡単な結合操作を行おうとしていますが、エラーが発生します:
java.lang.IllegalArgumentException: Unable to resolve attribute [Companies] to path at org.hibernate.ejb.criteria.path.AbstractPathImpl.unknownAttribute(AbstractPathImpl.java:120) at org.hibernate.ejb.criteria.path.AbstractPathImpl.locateAttribute (AbstractPathImpl.java:229) で org.hibernate.ejb.criteria.path.AbstractFromImpl.join(AbstractFromImpl.java:411) で com.maven_test.models.jpa.dao.ServicesDAO.findAllWithCompaniesByCriteria(ServicesDAO.java:106) でcom.maven_test.models.jpa.ServicesFindByIdByCriteria.test2(ServicesFindByIdByCriteria.java:44)、sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド)、sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)、sun.reflect. org.junit の DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)。runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) の org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) の org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod) .java:47) で org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) で org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) で org.junit.runners. BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) org.junit. runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) org.junit.runners.ParentRunner.run(ParentRunner.java:363) org.junit .runner.JUnitCore.run(JUnitCore.java:137) com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74) com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211) ) com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) でcom.intellij.rt.execution.application.AppMain.main(AppMain.java:134)java:268) org.junit.runners.ParentRunner.run(ParentRunner.java:363) で org.junit.runner.JUnitCore.run(JUnitCore.java:137) で com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner) .java:74) で com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211) で com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67) で Sun で。 com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) の sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) でのreflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド)java:268) org.junit.runners.ParentRunner.run(ParentRunner.java:363) で org.junit.runner.JUnitCore.run(JUnitCore.java:137) で com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner) .java:74) で com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211) で com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67) で Sun で。 com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) の sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) でのreflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド)com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211) の startRunnerWithArgs(JUnit4IdeaTestRunner.java:74) com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67) の startRunnerWithArgs(JUnit4IdeaTestRunner.java:74) com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) で sun.reflect.NativeMethodAccessorImpl.invoke0 (ネイティブ メソッド)com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211) の startRunnerWithArgs(JUnit4IdeaTestRunner.java:74) com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67) の startRunnerWithArgs(JUnit4IdeaTestRunner.java:74) com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) で sun.reflect.NativeMethodAccessorImpl.invoke0 (ネイティブ メソッド)execution.application.AppMain.main(AppMain.java:134)execution.application.AppMain.main(AppMain.java:134)
メソッドは次のようになります。
結合する必要があるテーブルの名前は「zaks_companies」で、エラーはどちらの場合も同じです。
および企業モデル:
私のマニュアルの 1 つがここにありました: https://www.youtube.com/watch?v=J-f4jvljpgQ on 16:50