問題タブ [discriminator]

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 投票する
3 に答える
2263 参照

hibernate - JPA (Hibernate) SINGLE_TABLE 継承キャッチオール識別子値?

SINGLE_TABLEレガシー データベースをマッピングしています。そのうちの 1 つのテーブルは、識別子列を使用したマッピングを使用して継承階層に自然にマップされます。問題は、膨大な数の識別子の値があることです! (また、新しいものが時々追加され、アプリはポリモーフィック クエリでそれらを自動的に取得する必要があります)。私のアプリの観点からは、これらの異なる型の大部分を同じように扱いたいと思います (つまり、継承階層の基本クラスにマップするだけです)。ただし、一部については、特定のサブクラスにマップしたいと考えています。問題は、JPA が@DiscriminatorValue基本クラスに固有のものを 1 つ提供することを要求しているように見えることです (そうでなければ、デフォルトのものを生成します)。

具体的には:

これを JPA (または Hibernate 3.3 固有の拡張機能) でエレガントにマップする方法はありますか? 私ができる唯一の解決策は、継承を放棄し、特別な場合にその値を内部的に切り替える通常のフィールドとして列をマップすることですが、それは不自然で少し汚いと感じます。

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

xml - NHibernate の既存のデータベース スキーマへのマッピング: 解決方法が正確にわかりませんか?

状況は次のとおりです。

データベース スキーマが指定されている Oracle データベースがあるため、これを変更することはできません。ID はデータベースを通じて生成され、主キーです。OR マッパーは自作のものであり、NHibernate に置き換える必要があります。

関連付けのみがあり、継承がない 2 つのテーブルがあります。

  1. ModeType : ID、名前、オリジン
  2. モード: ID、Mode_Type_ID、コメント

私が持っているクラスは次のとおりです。

  1. ModeType : パブリック プロパティ: ID、名前、オリジン
  2. ModeProduction : パブリック プロパティ: ID、ModeType_ID、Comment
  3. ModeQualityCheck : パブリック プロパティ: ID、ModeType_ID、コメント

「古い」OR マッパーでは、クラスModeProductionModeQualityCheckがテーブルModeに永続化されます。たとえば、すべてのModeProductsを取得 (および書き戻す) したい場合、ModeProductsは、"ModeType_ID" が"Origin" = 1 のModeTypeテーブルの "ID" と等しいテーブルModeから取得されます。プロパティ/列"Origin" は識別子のように機能しますが、継承はありません。

では、NHibernate でこれをマップして同じ効果を得るにはどうすればよいでしょうか。ModeTypeテーブルで Origin が 1 であるすべてのModeProductsを取得 (および後で書き戻す) するにはどうすればよいでしょうか?

これまでのところ、次の XML マッピングがあります。

モードタイプ:

ModeProduction: (テーブルModeTypeの Origin = 1 )

ModeQualityCheck: (テーブルModeTypeの Origin = 0 )

誰か助けてくれませんか?

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

hibernate - 単一テーブル継承で org.springframework.orm.hibernate3.HibernateObjectRetrievalFailureException を処理するには?

JPA Discriminator アノテーションを単一テーブル継承戦略と Hibernate ORM 実装で使用して、アプリケーション内のさまざまなユーザー タイプを処理しています。不明な識別子の値がデータに存在する場合、Hibernate は次のような例外をスローします。

不明な識別子の値を無視するJPAの方法/注釈はありますか?

ありがとうございました、

トム

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

php - Doctrine2 を使用した結合テーブルの識別子

Divers という抽象親クラスがあり、他のいくつかのクラスによって拡張されています。
したがって、単一テーブル継承戦略を使用して、D2 で継承マッピングを使用します。

私が達成したいのは、ユーザーにそれが何であるかを説明する小さな説明を付けてブラウザに識別子を表示することです。
ディスクリミネーターを結合されたテーブルに配置するなどの解決策を探しましたが、何も見つかりませんでした。

私の目標を達成するためのアドバイスはありますか?

よろしくお願いいたします。

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

java - ハイバネート弁別器

私はそのようなものを持っています

resource_type と resource_id は、リソースのタイプを識別するために使用されます。

resource_type はimageまたはです。resource_type に resource_id がvideo含まれている場合imageは IMAGE テーブルの ID です。resource_type が含まれている場合、resource_id はvideoテーブルの ID です VIDEO

ここで IMAGE および VIDEO テーブル

(*) 表はもっと複雑ですが、説明をわかりやすくするために縮小しました!!!

私も次のクラスを持っています

私はこのチュートリアルから識別子属性について何かを理解しようとしました: http://viralpatel.net/blogs/hibernate-inheritence-table-per-hierarchy-mapping/ しかし、例は少し違います...-_-'

Action クラスの Resource オブジェクトに IMAGE end VIDEO テーブルをマップしたいのですが、これらの pojo クラスを hibernate xml マッパーでマップするにはどうすればよいですか?

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

java - Hibernate DiscriminatorColumn.Type が機能しない

抽象クラス AbstractTile があります

AbstractTile から継承された多くのクラス

問題は、それらをデータベースに保存するときにエラーが発生することです

私は何を間違っていますか?DiscriminatorType は String に設定されているのに、なぜ int が必要なのでしょうか?

編集: SQL 作成ステートメント

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

symfony - Doctrine Class Table Inheritance get all children

すべての記事を取得し、記事の種類 (識別子) を取得したい。すべての子 (固定およびオークションのすべてのレコード) を結合し、作成日で並べ替える別の方法があるでしょうか?

記事エンティティ:

オークションエンティティ

固定エンティティ

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

c# - Asp.net Identity - 識別子に関係なくログインする方法

私はasp.net IDを使用しており、IdentityUserから継承するユーザークラスが多数あります。

次のような継承チェーンがあるとしましょう。

IdentityUser <- AppUser <- ServiceUser <- ServiceEmployee および ServiceCustomer (両方とも ServiceUser から継承)。

統一されたログインフォームを作成しようとするとき、最善の戦略は何ですか?

OTB アカウント コントローラーを使用し、ServiceUser を使用するように UserManager を変更しても、ServiceEmployee として登録されたアカウントにログインしようとすると失敗します。アカウントが別の「タイプ」として登録されているため、ログインに使用できません。そのため、登録タイプとログインタイプが異なる場合、これはどの組み合わせでも発生します。

複数の UserManagers を使用するようにログイン アクションを更新して、各ユーザー タイプに対してチェックを行う必要がありますか、それとも私が達成しようとしていることを行うためのより良い方法がありますか。

情報をありがとう。