問題タブ [joined-subclass]
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.
java - Joined_subclass 継承タイプによってマップされたエンティティを永続化する前に、hibernate がエンティティを選択するのはなぜですか?
スーパークラス Person と 2 つのサブクラス (親と子) があります。それらは JOINED_TABLE 継承タイプでマップされます。
親と子は双方向の 1 対多の関係にあります。
Person.hbm.xml にはすべての構成が含まれています。
Parent エンティティと関連する Child エンティティを永続化すると、挿入する前に休止状態で select ステートメントが発行されます。これらの select ステートメントは、child テーブルと person テーブルから Child エンティティのデータを照会します。
データベースは実行ごとに再作成され、選択するものはありません。
親エンティティと関連する子エンティティを永続化する main メソッドからの抜粋を次に示します。
これらの select ステートメントが insert ステートメントの前にあるのはなぜですか?
sql - JOINED戦略でマッピングされたエンティティ継承の単純なクエリで不要な内部結合を回避する方法は?
プロバイダーとして Hibernate 4.2.0-Final で JPA 2 を使用しており、次のエンティティがあります。
そして、私は次のJPQLを持っています:
どの Hibernate が次の SQL を生成しているか:
しかし、Customer に固有のフィールドである個別のコードで Customers をカウントするだけでよいため、「Person」への内部結合は必要ありません。Hibernate に次のような SQL を生成してもらいたい (つまり、テーブル 'Person' を結合せずに):
不要な内部結合を避けるように Hibernate に指示する方法はありますか? たぶん、Hibernate 固有のクエリ ヒントでしょうか。
hibernate - 階層内の各親のディスクリミネーターを使用した結合継承戦略でのマルチレベル継承
以下の私のクラスを検討してください
製品(抽象ルート クラス)
Car (Product を拡張する別の親クラス)
Speeder (Car を拡張する階層の最後の子)
JPAがディスクリミネーターを使用してオブジェクトモデルをデータモデルにマップするとき、単一の親から子への階層でディスクリミネーターを使用しても問題ありませんでした。ディスクリミネーターの値は適切に設定されていますが、Speeder-extends- Car-extends-Product、ディスクリミネーターの値または適切に機能していない、

単一の継承(子から親など)で識別子を使用して結合継承のみを使用している場合、識別子の値は尊重された列に適切にマップされていますが、別の階層を追加したため、スピーダーの識別子の値はProduct テーブルの discriminator 列に配置され、Car テーブルのdiscriminator 列はnull 値として残されています。ここで達成しようとしていることを理解していただければ幸いです。これは可能ですか? 回避策はありますか?非常に多くの例がありますが、この結合された継承テーブルのような例である、より深い階層を示すものを正確に見つけることはできませんしかし、より深い階層では、周りの例は単純な階層しかなく、この種の戦略を使用する他の例とほとんど同じです. どんな助けや啓発も大歓迎です。
c# - NHibernate でサブクラスごとのテーブル オブジェクトを取得する
私は、膨大な数の列を持つ ScheduledJobs と呼ばれる DB テーブルと、膨大なプロパティを持つ単一の一致する C# オブジェクトに遭遇しました。私はそのデザインに満足しておらず、サブクラスごとのテーブル戦略を使用して分割したいと考えていました。それ以外の
私は持っている
NHibernate .hbm.xml ファイルを書き直して (Fluent ではなく、申し訳ありません)、以下を使用しました。
すごい!私の問題は、サブクラス化されたジョブを賢く取得する方法がわからないことです。1 つの大きなテーブルの利点は、型やキャストについて心配する必要がないことです。
私のセットアップでは、同じ ID を持っています (これで十分なはずです。まだ一意です)。ただし、型は不明です。抽象ジョブをフェッチし、JobTypeID を調べ、関連する C# サブクラスを見つけて、その下で再フェッチする必要があります。サブクラス。
必要に応じて、JobTypeID を取り込むことができます。その ID を、それに関連付けられているジョブ サブクラス テーブルとペアにする必要があります。
要するに、NHibernate から受け取った ScheduledJob オブジェクトを正しいサブクラスにする必要があり、私の介入は可能な限り少なくする必要があります。ここでディスクリミネータを使用できることは素晴らしいことですが、公式ドキュメントでは許可されていません。このデザインは、根本的に何かを誤解しているように感じさせます。私を正しい方向に向けてください。
ありがとう!
jpa - 継承を使用する場合の JPA @PrePersist および @PreUpdate の順序
@PrePersist および @PreUpdate アノテーションと Joined 型の継承を使用する次のコード スニペットを想定します。
質問:コールバック メソッドの実行順序に依存できますか?
たとえば、クラス A と B を永続化する場合、B の prePersist メソッドは A の prePersist メソッドの前に実行されますか、それともその逆ですか?
クラス A が永続化される前に、B の prePersist が実行されると想定できますか?
hibernate - Hibernate omit table when extended class contains only embeded collection
I am using at the moment the inheritence strategy InheritanceType.JOINED. My extended class contains just a Map of type String which is stored in its own table. I wonder if there is a possibility to omit the table for my extended class which contains just the id.
Please let me know how you would model it differently if there exist no direct option to "omit" the table.
The example shows that I have a base class "Attribute" which get extended by a class "StringMapAttribute". This extendend class just contains a collection. The table for "StringMapAttribute" contains in the end just the "id" which is "Design Overhead" so I can use inheritace and model different attribute types. Therefore it is not ideal to have just a table with one single id column.
Thank you for any helpful hints.
java - Hibernate: onetomany 関連付けでポリモーフィック コレクションをフェッチ中に org.hibernate.InstantiationException を取得する
JPA アノテーションを使用して、Hibernate で JOINED 継承戦略を使用しようとしています。私の基本クラスは抽象的で、他のエンティティとの多対一の関連付けがあります。ただし、Hibernate Exception: Cannot instantiate a abstract class or interface が発生します。以下は私のクラス構造です:
Account.java
SavingsAccount.java
Branch.class
したがって、次のコードを使用して支店が保有するアカウントのリストを取得しようとすると、次の例外が発生します。
例外トレース:
私のコードの何が問題なのかを理解するのを手伝ってください。抽象キーワードを削除すると正常に機能しますが、Account クラスを抽象化したいと考えています。これを達成する方法はありますか?