問題タブ [table-per-hierarchy]
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.
entity-framework - 複数のnull許容識別子を使用したEF4.1の階層レイアウトごとのテーブルの問題
int PK、1つのNOT NULLフィールド、および2つのNULL文字列フィールドを持つテーブルがあります。
EFでTPHスタイルのデザインを設定するときは、次のように設定します。
トップレベルタイプには、PKフィールドとNOTNULLフィールドのみがあります。
最初のレベルは、最初のnull許容フィールドをディスクリミネーターとしてチェックします。nullではない結果の型は抽象です。それに応じてフィールドをマッピングします。
2番目のフィールドに対してこれを再度実行し、nullでない場所に再度マッピングします。マップするフィールドにnullable=falseを設定しました。
「異なるキーを持つ2つのエンティティが同じ行にマップされています」というメッセージが表示されます。
最初のアイテムのnullではない属性が子に継承されていないためだと思います。
NullField1がnullでNullField2がnullでない場合に対処するために3番目のタイプを作成しました(これは私のDBでは発生しません、制約があります)が、追加しても機能しません。
2つのサブ子のいずれかにnull以外の条件を明示的に追加するには、列をマップする必要があります。これは、外部のプロパティにマップしても機能しません。
「BothNullItem」の条件の組み合わせも機能しません。
何か案は?
java - Table-per-Hierarchy 構造の DAO を取得する
User
クラスと 2 つのサブクラスEmployee
とCustomer
. この階層を、ユーザーのタイプを指定するための列を持つ DB の階層ごとのテーブルとして実装しました。このテーブルをクエリするときに、正しいタイプのオブジェクトを返す必要があります。
CustomerDAO
orのようなオブジェクトのタイプごとに個別のDAOが必要なEmployeeDAO
ので、それぞれがそれぞれCustomer
の andEmployee
オブジェクトを返します。もしそうなら、DAOFactory
使用せずにそれらを取得する方法:
実装する型User
が変わる可能性があり、毎回条件を変更したくないためです。
それとも他に方法はありますか?任意のアイデアをいただければ幸いです。
注: ORM フレームワークは使用しておらず、使用する予定もありません。
inheritance - Grails の継承マッピングにおける識別子の問題
以下に説明する継承マッピングを持つ4つのクラスA、B、B1、B2があります
。A(テーブルAにマップされる)は最上位の親クラスであり、その継承マッピング戦略はtablePerHierarchy=false
(そのサブクラスのそれぞれがシングルテーブル)。
クラス B は A から拡張され、B1、B2 は B から拡張されます。ただし、B1 と B2 は B と同じテーブルを共有するため、B クラスでは、tablePerHierarchy=true
B1 と B2 を分離するために と識別子を宣言します。
詳細コードは次のとおりです。
アプリを起動すると、エラーが発生しました:
ディスクリミネーターに関する Grails のドキュメント ( http://grails.org/doc/latest/ref/Database%20Mapping/discriminator.html ) の指示に従いましたが、機能しませんでした。ここでこのドキュメントの問題に関する JIRA を見つけました: http://jira.grails.org/browse/GRAILS-5168、コメントとしてコードを修正しましたが、それでも同じエラーが発生しました。
この問題を引き起こした理由はわかりません。B の tablePerHierarchy=true は、A で定義された戦略をオーバーライドしますか?
この問題を解決するのを手伝ってくれませんか? どうもありがとう。
entity-framework - Discriminator 列に値 null を挿入できないため、階層ごとの EF テーブル (TPH) が保存されない
カテゴリの乗算タイプに使用されるテーブルがあり、ロードするオブジェクトのタイプを指定する「ClassName」という名前の Discriminator 列が含まれています。ClassName 列は 'Category' の既定値で null 不可です
私の問題は、新しいアイテムを保存するときにエラーが発生することです:「値nullを列ClassNameに挿入できません」テーブルカテゴリ。
私は、ef が新しいオブジェクト クラスに基づいて ClassName 値を設定すると考えました。オブジェクトを正しい 'ClassName' 値で保存するにはどうすればよいですか?
java - DiscriminatorFormula
弁別子に複数の列が必要な単一のテーブルがある場合、@ DiscriminatorFormulaを使用する唯一の解決策はありますか?
いくつかのプロトタイピングが私たちに説明できないいくつかの結果を与えたので、私は尋ねます。
失敗したプロトタイプ:最初に、スーパークラスで1つの@DiscriminatorColumnを使用し、サブクラスで2番目の@DiscriminatorColumnを含めて、3つの深さのクラス階層のプロトタイプを作成しました。もちろん、この警告が表示されました。
識別子列はルートエンティティで定義する必要があり、サブクラスでは無視されます
更新は機能しましたが、挿入は機能しませんでした。そこで、そのアイデアを破棄しました。
成功?プロトタイプ: 次に、機能すると思われる次のことを試しました。サブクラスの2番目の@DiscriminatorColumnを省略し、外部キー(とにかく必要になる)に@JoinColumnを含めるだけです。おそらく、結合はさまざまなタイプのオブジェクトに対するものであるため、Hibernate/JPAはどのサブクラスが正しいかを判断できるようです。誰かがそれを説明できますか?
それを破棄し、@ DiscriminatorFormulaを使用して、2つのディスクリミネーター列で定義された明示的な関係を取得する必要がありますか?
nhibernate - TPH vs TPT vs TPC および OR マッパー
ID、名前、説明などの共通フィールドを共有する一連のタイプを持つデータモデルに取り組んでいます。より具体的には:
Document クラスには属性のリストがあります。これらの属性は私たちのドメインにあり、String、Integer、DateTime などの型と、Address や String、Integer、Address などのリストなどのより「複雑な」型です。共通の属性 (Id、Name、Description) を含み、適切なサブクラスでより具体的な属性を持つ抽象基本クラス (AttributeBase)。例: StringAttribute (値)、IntegerAttribute(値)、AddressAttribute (Street など)、StringListAttribute、IntegerListAttribute、AddressListAttribute。15 ~ 20 の異なるサブクラスについて話しています。しかし、これらのクラスをデータベースでどのようにモデル化しますか? TPH、TPT、TPCのどれを選びますか? TPT と EF 4.1 を選択したときのパフォーマンス ヒットについて読んだことがありますが、TPH に 1 つの大容量テーブルを使用すると、パフォーマンスが低下しません。パフォーマンスが良くても、私には正しく聞こえません。テーブル内の潜在的に 10000 ~ 1000000++ 行のデータについて話している。
これらのシナリオに関して、直接の経験はありますか? この件に関して、私は本当にあなたからここにいたいと思います。
vb.net - 識別子による階層グループごとの Entity Framework 4.2 テーブル
私は、EF 4.2 コードの最初のモデルを使用してプロジェクトに取り組んでいます。このモデルには、製品の TPH 継承構造が含まれています。この継承モデルのポリモーフィックな結果をディスクリミネーターでグループ化する必要があり、いくつかの問題が発生しています。
エンティティ フレームワークは、このグループ化を完了するための識別子を公開しません。私の最初の質問は、この識別器に直接アクセスできるかどうかです。私の読書と経験は私にノーと言っているので、私はこの種の作品の解決策を思いついた. うまく機能しておらず、どのように維持する必要があるかについて満足していません.
私のクラスは次のようになります(簡略化):
製品を受け取り、そのベースタイプ名を文字列として返す拡張メソッドを構築しました。
そこで、製品の結果をタイプごとにグループ化する構造を構築して、それらを実行できるようにしました。
リストをループして目的の動作を取得できるようになりましたが、パフォーマンスは理想的ではなく、製品の数が増えるにつれて受け入れられなくなるのではないかと心配しています。
また、これにより共有プロパティ (名前) に簡単にアクセスできますが、これらを実際の型にキャストするための多くのオプションがありません。. .
任意の推奨事項を歓迎します。また、上記のコード エラーをご容赦ください。現時点ではプロジェクトにアクセスできないため、メモリから例を再入力しました。
java - hibernateを使用してネストされたサブクラスを適切にマップする方法
Hibernateでサブクラスをネストするにはどうすればよいですか?
たとえば、次のクラス階層があります。
これは理想的なオブジェクト構造です。Hibernateを使用してこれを正常にマッピングするにはどうすればよいですか?PageQuestion
抽象クラスは非常に重要だと思います。再利用可能なプロパティとロジックが多数含まれています。PageQuestion
また、参照しないで具体的に参照する必要がありますPageElement
<-これは悪いことです。PageQuestion
また、すべてのオブジェクトに対してクエリを実行したいと思います。