問題タブ [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.

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

java - どのアノテーションを使用する必要がありますか: @IdClass または @EmbeddedId

( JPAJava Persistence API) 仕様には、エンティティ複合キーを指定する 2 つの異なる方法があります:@IdClass@EmbeddedId.

マッピングされたエンティティで両方の注釈を使用していますが、JPA.

複合キーを指定する方法を 1 つだけ採用したい。どれが本当に最高ですか?なんで?

0 投票する
15 に答える
682953 参照

jpa - JPA EntityManager: なぜ merge() よりも persist() を使用するのですか?

EntityManager.merge()新しいオブジェクトを挿入し、既存のものを更新できます。

persist()なぜ(新しいオブジェクトしか作成できない)を使いたいのでしょうか?

0 投票する
17 に答える
608344 参照

java - Java Persistence APIのFetchType LAZYとEAGERの違いは?

私は Java Persistence API と Hibernate の初心者です。

Java Persistence APIのFetchType.LAZYとの違いは何ですか?FetchType.EAGER

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

java - リスト内のSpring jpaの基準ビルダー検索

私は著者のリストを持つブッククラスを持っています:

さて、これは私のBookSpecificationsクラスです:

authorId指定されたものがリストにあることを確認するにはどうすればよいですか?

エラー:

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

java - 主キーが自動インクリメントの場合、JPA (EclipseLink) を使用して DB から特定の「行」を取得する方法は?

このテーブルがあるとします

過去に私が使用した

ただし、このインスタンスの主キーは自動インクリメントされます。first_name や last_name などの他の列を使用して行を取得し、他の値とともに主キーを取得することは可能ですか?

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

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

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

java - @IdClass アノテーションを持つクラスに挿入可能なオブジェクト

Section.class でカスケード保存を行うことは可能ですか? Section オブジェクトを作成し、ID なしで新しい質問を追加します。保存しようとすると、エラーが発生します:

org.postgresql.util.PSQLException: エラー: テーブル "question_to_section" の挿入または更新が外部キー制約 "fk_2br9f09ok965403a9rv5y2n10" に違反しています 詳細: キー (question_id)=(0) がテーブル "question" に存在しません。

@Embedded アノテーションも使用しようとしましたが、失敗しました。

セクション クラス:

セクションクラスへの質問

質問セクション ID

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

java - 基準 API 結合: java.lang.IllegalArgumentException: 属性を解決できません

JPA基準APIを介して簡単な結合操作を行おうとしていますが、エラーが発生します:

java.lang.IllegalArgumentException: Unable to resolve attribute [Companies] to path at org.hibernate.ejb.criteria.path.Abs​​tractPathImpl.unknownAttribute(AbstractPathImpl.java:120) at org.hibernate.ejb.criteria.path.Abs​​tractPathImpl.locateAttribute (AbstractPathImpl.java:229) で org.hibernate.ejb.criteria.path.Abs​​tractFromImpl.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