Hibernateでは、2つのクラス間に親子関係がありますが、子クラスはビュー、テーブルではありません。Hibernate @親としてテーブルを継承し、子として表示
今、問題は、Inheritance annotationを提供する必要があることです。それ以外の場合、Hibernateはデフォルト値を考慮し、存在しない "dtype"列を探します。
私は戦略(デフォルトはSINGLE_TABLE)としてTABLE_PER_CLASSを使用しようとしましたが、この場合、Hibernateは子クラスに関連付けられたビューで何らかの種類のユニオンを行います。存在しない列、つまりテーブルとビューの両方に存在する列については何らかの形で発生します。
これは、アノテーションの観点から適切にモデル化する方法か、あるいは、子を含む基礎クエリを生成せずに親エンティティを求める方法です。 (2番目の質問はhereを頼まれた私は、私はよりよい解決策を望んでいるので、まだ試すことを明らかにしなかった。。)
編集:より良い説明を示すために、ここにあるコードと同等の部分に私のセットアップ:
@Entity
@Table(name = "PARENT")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class ParentEntity implements Serializable {
// ...
}
@Entity
@Table(name = "PARENT_VIEW")
public class ChildEntity extends ParentEntity implements Serializable {
// ...
}
一部のコードが役立ちます。 –
私は読書を楽にするためにいくつかのコードを含んでいました;) – DanielM
'ChildEntity'だけがあなたが持っていて、*がこれまで持っていた唯一のサブクラスであれば、' SELECT p FROM ParentEntity p WHERE TYPE(p)< > ChildEntity'。さもなければ、私はあなたが '@ MappedSuperclass'ソリューションなしでそれを行うことはできないと信じています。 –