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

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

jpa - 別の jar で jpa マップされたスーパークラスを開く

エンティティ間で共通のフィールドを持つエンティティを使用して、いくつかのサービスを構築しようとしています。これを処理するために、私たちが取ったアプローチは、すべての共通フィールドを持つ基本クラスを定義し、そこから他のすべてを拡張することです。

基本クラスはマップされたスーパークラスとして定義され、派生クラスは通常のエンティティです。クラス レベルでは、エンティティは基本クラスを拡張します。

モジュールを維持するために、共通プロジェクト (Maven ベース) と、この共通プロジェクトに依存する別のプロジェクトのエンティティで基本クラスを定義しました。

問題は、マップされたスーパークラスを識別/解析しないことです。共通のマッピングを解決できません。

だから、私の質問は、私がここでやろうとしていることは何でも、それはJPAのルール/仕様に準拠していますか?

マッピングされたスーパークラスを具体的なものと同じマッピング xml で定義すると、正常に動作します。しかし、それを回避したいプロジェクトごとに繰り返す必要があります。

クラスとマッピングのコード スニペットを次に示します。

また、ここでは、共通のマップされたスーパークラスも共通の主キーを定義していることに注意してください。ID。

基本クラス:

基本クラスのマッピング xml

この永続性 xml

これらは別の瓶にパッケージ化されています。

具体的なエンティティ

具体的なエンティティのマッピング

具体的なエンティティの永続性 xml

編集:(dkaustubhの提案に基づく)

基本エンティティで注釈を使用すると機能します。派生エンティティのマッピングを XML に残しました。

ただし、マッピングの一貫性を保ち、XML を使用して定義したいと考えています。注釈では機能するのに、XML マッピングでは機能しないのはなぜですか?

0 投票する
0 に答える
204 参照

java - JPA 1 つのエンティティ 3 つのテーブル

それぞれ同じ列を持つ 3 つのテーブルがあります。そのうちの 1 つには元の測定データがあり、もう 1 つには分と時間に集計されたデータがあります。JPAにデータをロードするとき、すべてのデータセットに同じエンティティ/クラスが必要です。継承/マップされたスーパークラスで試しましたが、これまでのところうまくいきませんでした(正しいかどうかもわかりません)。適切なコンストラクターがないか、テーブルがマップされていないことがわかります。Table of my Value エンティティをテーブルの 1 つに設定すると、そのテーブルで機能しますが、実行時にすべてのテーブルからデータをロードできるようにしたいと考えています。

PersistenceManager.java から

値.java

}

スタックトレース

それが役に立ったら、ここにプロジェクト全体がありますhttp://crafthost.de/src.zip

私がやろうとしていることを理解していただければ幸いです。

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

symfony - doctrine 2による複数レベルの継承マッピング

「 Addressable」である(アドレスを持つことができる)3つのエンティティがあります。

配送先
お客様
配送センター

すべてのAddressableエンティティもGeolocatable (緯度と経度を持つ) ですが、トラック ポイントルート ポイント(緯度と経度の順序付けられたシーケンス) のように、 GeolocatableであるがAddressableではないエンティティがあります。

doctrine 2 (Symfony2 と YAML マッピングを使用) でこれを達成するための最良の方法は何ですか?

私の質問は次のとおりです。この問題に対する最善のアプローチは何ですか? マッピングされたスーパークラス? 単一テーブルの継承?マルチテーブル継承?教義のドキュメントを読んでも、これに最適なものはわかりませんでした。

それが重要な場合、私はPostgreSQLを使用しています。

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

inheritance - 継承を使用してID GenerationTypeを区別するJPA

同じテーブル T を持つ 2 つの異なるデータベース D1、D2 があります。

T には、D1 で自動生成された主キー列 ID があり、D2 では単純な整数です。D1 の T から D2 の T にレコードをシフトする必要があるため、JPA で T を @Entity としてマッピングしました。問題は、@ID が D1 では @GeneratedValue(strategy = GenerationType.IDENTITY) であるが、D2 ではそうではないことです。

エンティティを複製しないための解決策はありますか? @MappedSuperclass を使用するには @Id 列が必要であることに気付きましたが、私の場合は特殊化しようとしているものです。私が見つけた唯一の解決策は、@id を除いて同一の同じテーブルを参照する 2 つの異なるクラスを生成することです...何か良いことはありますか?

(一般的な抽象クラスを使用すると、@NamedQueries を定義するときに問題が発生します。継承されたフィールドを参照できないようです (SELECT m FROM Specialized m WHERE m.aBaseField= :aBaseField) 例外を返します:「状態フィールド パス ' m.aBaseField' を有効な型に解決できません。"

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

symfony - Doctrine2 / Symfony2 - 同じテーブル上の複数のエンティティ

Symfony2 アプリケーションには、MainBundleと、有効または無効にできる個別のバンドルがあります。MainBundleには、Model基本的なEntityが必要です。OtherBundleでは、MainBundleEntityと同じテーブル名を持つEntity

MainBundle のフィクスチャは、 MainBundle 以外のバンドルの有無にかかわらずロードする必要があります。

Modelに @ORM\MappedSuperclass 、MainBundle の Entity に @ORM\Entity 、OtherBundle の@ORM \ Entityを使用場合Doctrine2は「テーブルが既に存在します」というエラーで停止します。

モデルが他のバンドル内の他のエンティティについて知る必要がないため、継承テーブルを使用できません。@ORM\DiscriminatorMapOtherBundleを指すことができません。

これを行う方法はありますか?

0 投票する
0 に答える
709 参照

hibernate - Hibernate - MappedSuperClass と埋め込み ORM 戦略の混合

作業中の既存の Hibernate Entity 階層があります。エンティティはすでに MappedSuperClass を使用して、基本クラスからいくつかの共通フィールドを継承しています。私のシナリオでは、これらのフィールドも継承する必要があり、さらに、Hibernate の Embeddable 機能を介して構成を活用する必要があります。

たとえば、エンティティ Car は MappedSuperClass としてマークされ、エンティティ CarTypeA および CarTypeB によって拡張されます。

現在、CarTypeA と CarTypeB の間にもいくつかの共通フィールドがあり、Embeddable クラスに抽出できます (CommonCarStuff と呼びます)。CommonCarStuff は次のようになります

このクラスを CarTypeA で使用できますが、実行時に Hibernate によって生成された INSERT クエリが正しくありません。生成する代わりに

クエリ生成状態

この列がテーブルにマップされていないため、クエリが常に失敗します。Embedded クラスを正しく宣言しました。

誰かが私を助けてくれることを願っています。

ありがとう

0 投票する
0 に答える
575 参照

php - Doctrine 2 - マッピングされたスーパークラスを持つ関連クラスを持つ方法は?

ManyToMany 関係を定義するために、Doctrine 2 でマップされたスーパークラスに問題があります。

私のコードは次のとおりです。

だからここに私が持っているもののスキーマがあります: http://pix.toile-libre.org/upload/original/1385651287.png そして、私が欲しいものがあります: http://pix.toile-libre.org/upload/オリジナル/1385651300.png

この結果を取得する方法がわかりません。可能であれば誰か教えてもらえますか?

助けてくれてありがとう。