私は同じフィールドを持つ2つのオブジェクトを持っていますが、異なるテーブルからです(foo_somethingとbar_somethingは実際には単純なテーブルではなく、いくつかの結合操作の結果があります)。私は@Subselect
データをフェッチするために休止状態注釈を使用します。このようなクラス構造にすることはできますか?注釈は継承されないため、このクラス構造は機能しません。私は@Inheritance
アノテーションを使用した場合、私はエラーUnknown column foo_somethingca0.DTYPE
クラス継承を持つHibernateのSubselect
class Something {
@Id @Column Long id;
@Column String name;
@Column String description;
//getters, setters, constructors
}
@Entity
@Immutable
@Subselect("SELECT id, name, description FROM foo_something")
class FooSomething extends Something {
}
@Entity
@Immutable
@Subselect("SELECT id, name, description FROM bar_something")
class BarSomething extends Something {
}
UPDを取得します。
おかげで、@HenryMartensは、私は今、それがうまく働いて、TABLE_PER_CLASS
戦略、および作られたクラスの抽象と注釈@Entity
と@Inheritance
を追加しました:
@Entity
@Inheritance(strategy = TABLE_PER_CLASS)
abstract class Something {
@Id @Column Long id;
@Column String name;
@Column String description;
//getters, setters, constructors
}
@Entity
@Immutable
@Subselect("SELECT id, name, description FROM foo_something")
class FooSomething extends Something {
}
@Entity
@Immutable
@Subselect("SELECT id, name, description FROM bar_something")
class BarSomething extends Something {
}
私の基本クラス 'Something' - それはそれは私が' BarSomething'に複製したくないフィールド、ゲッターとセッターの一覧と簡単な基底クラス、だ、テーブルではありません'FooSomething'のため、' @ Table'アノテーションをベースクラスで使用することができないため、 'SchemaManagementException:Schema-validation:missing table [SOMETHING]'が発生します。このクラスは抽象クラスです。 –
@Denis Gavrus次に、あなたは 'Something'クラス抽象クラスを作成しなければなりません。 'InheritanceType.TABLE_PER_CLASS'を使って' FooSomething'と 'BarSomething'のそれぞれのテーブルを得ることができます。 –