問題タブ [mappedsuperclass]
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.
jpa - ManyToOneを使用したJPAMappedSuperclass
私はある種の典型的な問題に直面しています。オブジェクト間の典型的な1-N関係を想像してみてください。正確には、User(U)とRoom(R):[U] * ---1[R]。
ここで問題が発生します。Roomは、BlueRoom、RedRoomなどの実装を持つ抽象基本クラスである必要があります。ユーザーエンティティ内の関係をどの程度正しく設定しますか?
@MappedSuperclassの代わりにRoomSuperclassで@Entityを使用することでこれを解決できる可能性があることはわかっていますが、それが適切な解決策であるかどうか、またより良い解決策があるかどうかはわかりません。
hibernate - @MappedSuperClass in Hibernate = AnnotationException:不明なmappedBy
エラー: 原因:org.hibernate.AnnotationException:不明なmappedBy:com.xxx.data.dao.classes.Categories.categoriesLang、参照されたプロパティ不明:com.xxx.data.dao.classes.superclasses.CategoriesLang.categories
私のセットアップ:
Hibernate 3.5.6
解決した更新!!!
久しぶりに研究をして成功しました。それはうまくいきます!
inheritance - @MappedSuperClassが機能しないのはなぜですか?
私は次の@MappedSuperClassと@Entityを持っています:
データベースでは、両方のテーブルに同じ列があるため、すべての属性がSuperClassにあります。
しかし、@ entity(table1またはtable2)のいずれかを使用してクエリを実行しようとすると、OpenJPAエラーが発生します。
@Entityクラスに属性@Idが見つからない理由がわかりません。
誰かアイデアがあれば、遠慮なく私を助けてください:)
よろしく、
Cytemax
php - Doctrine2でマップされたスーパークラスを使用する
学校では、ORMで動作するphpプロジェクトを作成しています。教義2。継承が必要です。次の設定を行い、顧客を画面に印刷したいと思います。
必要な継承のために、私は顧客とユーザーのクラスの人を拡張します。これが今の定義です
}
}
データベースを作成でき、すべてのクエリが機能していますが、顧客クエリを実行しようとすると、エラーが発生します。継承に関係しない他のすべてのクエリは正常に機能しています。したがって、問題を引き起こしているのはクエリやビューではありません。
これはクエリの結果です
作成されたデータベースは行に見え、Personで定義されたフィールドがあります。人のテーブルもあることに気づいたのですが、それは不必要だと思いますか?
ドキュメントをよく見てみました。そして、このエラーをグーグルで検索しましたが、それ以上のことはありません。
java - JPA @MappedSuperclass が Eclipse の別の JAR にあると、検証エラー「エンティティに主キー属性が定義されていません」が発生する
すべての @Entity クラスに使用する @MappedSuperclass AbstractEntity があります。スーパークラスがエンティティと同じ Eclipse プロジェクトにある限り、完全に機能します。しかし、私はこのスーパークラスを複数のプロジェクトで再利用しているので、独自の JAR ファイルに分割したいと考えています。これを行うと (もちろん、JAR ファイルをビルド パスに追加します)、Eclipse はすべての @Entity クラスでエラーを返します。
エンティティには主キー属性が定義されていません。
Eclipse は、@Entity アノテーションをエラーの原因として強調表示します。もちろん、すべてのクラスはこの AbstractEntity から継承します。パッケージ名は両方のプロジェクトで同じです。JAR プロジェクトには、必要なすべてのビルド パスがあります。AbstractEntity を含む JAR ファイル プロジェクトにエラーはありません。
これをアプリ サーバー (JBoss 7.1) にデプロイすると、正常に動作します。これは、エラーを誤って識別している単なるEclipseの問題だと思います。
抽象エンティティ:
単純なエンティティ クラスの例:
スーパークラスの注釈がフィールドではなくゲッターにあることが問題である可能性があると言っている他の投稿を見てきました-これは、エンティティ内に他のJPA注釈がない場合にのみ問題になります。何か案は?
php - 教義クラス-ライフサイクルコールバックとアノテーションドライバーによる継承
ライフサイクルコールバックに関連するアノテーションドライバーを使用したドクトリンormで問題が発生しました。私は2つのクラスを取得しました:
- 抽象モデル(MappedSuperclass、haslifecyclecallbacksとしてマークされています)
- ユーザー(拡張モデル、エンティティとしてマーク)
ユーザーのインスタンスをデータベースに保存した場合、prePresistメソッドは呼び出されません。メソッドをUserクラスに移動すると、すべて正常に機能します。
継承を期待どおりに機能させる方法のヒントを教えてください。(Modelクラスを拡張するすべてのクラスにidの代わりにuuidを設定しようとします)
あなたはこの要点でそれを見ることができます
doctrine-orm - Doctrine2: マップされたスーパークラスの OneToMany
私のDB構造は次のとおりです。
仕事:
- CTIテーブルワーク
- Workを拡張するMappedSuperclassテーブルAbstractImageWork
- AbstractImageWorkを拡張した最終テーブルPhotoWork
コメント:
- MappedSuperclassテーブルコメント
- Commentを拡張する最終テーブルWorkComment
WorkCommentはWorkに対して ManyToOne の関係を持っています:
WorkはWorkCommentと OneToMany の関係にあります。
問題は、Doctrine がスキーマの更新中に次のエラーを表示することです。
これは、 MappedSuperclass AbstractImageWorkがWorkとPhotoWorkの中間にあることに関係していると思いますが、実際にはこの関係を MappedSuperclass ではなく CTI テーブルに置きました..では、Doctrine はなぜこのように動作するのでしょうか?
何か案は?
spring - Spring Data JPA で MappedSuperClass のすべての子に汎用リポジトリを使用できますか?
次のクラス構造があるとします。
Spring Data JPAでは、ジェネリックAnimal
リポジトリを使用Animal
して実行時に、その種類を知らなくても永続化できAnimal
ますか?
エンティティごとのリポジトリを使用して、次のように使用できることを知っていますinstanceof
。
しかし、私は を使用するという悪い習慣に頼りたくありませんinstanceof
。
次のような一般的なリポジトリを使用してみました。
しかし、これにより、次の例外が発生します: Not an managed type: class Animal
。Animal
は ではなく、Entity
であるからだと思いMappedSuperclass
ます。
最善の解決策は何ですか?
ところで -Animal
に私のクラスの残りの部分がリストされているpersistence.xml
ので、それは問題ではありません。
java - @MappedSuperclassのサブラスのパラメータをオーバーライドする方法
私はMappedSuperclassを持っています
something
サブクラスでをオーバーライドしたい
Caused by: org.hibernate.MappingException: Duplicate property mapping of data found
しかし、例外が発生します
「@AttributeOverride」アノテーションのようなさまざまなことを試しましたが、役に立ちませんでした。
私が知っている唯一の解決策something
は、mappedSuperclassでTransientを作成することです。しかし、ここで一時的になることは望んでいません(オーバーライドしたくないがsomething
、一時的になることを望んでいる別のサブクラスがあるため)
jakarta-ee - @MappedSuperclass のエンティティ リスナーが機能しませんか?
バックグラウンド
EclipseLink (バージョン 2.3.2.v20111125-r10461、JPA 2.0 仕様の実装プロバイダー) を使用しています。
Person@MappedSuperclass
と呼ばれるこれを考えてみましょう:
彼は抽象的で、彼にはリスナー ( Listener ) が付いています。リスナーの実装は次のとおりです。
次に、Personを拡張するEmployeeクラスがあります。
Employeeはまだ抽象的であり、インスタンス化することを意図していません。ただし、 Employee は関係の一部である可能性があると考えられているため、注釈が付けられて@Entity
います。階層は、PartTimeEmployeeと呼ばれる非抽象エンティティに続きます。
PartTimeEmployeeはインスタンス化されることを意図しています。それを試して、何が起こるか見てみましょう! 細かい点を除いて、すべて正常に動作しているようです。@MappedSuperclass
Personに登録されているエンティティ リスナーは呼び出されません。@EntityListeners
アノテーションをPersonからEmployeeに移動しても、リスナーは呼び出されません。
1 つの修正
@EntityListeners
注釈をPartTimeEmployeeまで移動すると、彼が呼び出されます。うーん。
別の修正
Personにリスナーを登録したままにすることができ、 Employeeのアノテーションを完全に省略した場合、リスナーは意図したとおりに呼び出されます。しかしもちろん、私は望んでいない単一のテーブル戦略を手に入れました。同様に、ストラテジーの値を から に変更すると、リスナーが呼び出されます。もちろん唯一の問題は、データベース スキーマが思い通りにならないことです。@Inheritance
InheritanceType.TABLE_PER_CLASS
InheritanceType.SINGLE_TABLE
したがって、ここでの問題の核心は、従業員@Inheritance
クラスの注釈 (より具体的には、クラスごとに 1 つのテーブルへの戦略の変更) であり、階層内のエンティティ リスナーに関するすべてを EclipseLink に忘れさせます。
それは私が期待していたものではありません。私が理解できないのは何ですか?