2
我有相同的字段的兩個對象,而是從不同的表(事實上foo_something和bar_something不是簡單的表格,有幾個結果連接操作)。我使用@Subselect
hibernate註釋來獲取數據。我可以做這樣的班級結構,但哪些工作正常?此類結構不起作用,因爲註釋不會繼承。如果我使用@Inheritance
註解,我得到錯誤Unknown column foo_somethingca0.DTYPE
休眠子選擇與類繼承
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,我加了註釋@Entity
和@Inheritance
與TABLE_PER_CLASS
戰略,並提出了抽象類,現在它的正常工作:
@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' - 它不是一個表,它與領域,getter和setter方法,我不想'BarSomething'複製的列表簡單的基類和'FooSomething',這就是爲什麼我不能在基類的原因'SchemaManagementException使用'@ Table'註釋:架構驗證:缺少表[SOMETHING]'。這個類是一個抽象。 –
@Denis Gavrus然後,你必須讓你的'Something'類抽象。你可以使用'InheritanceType.TABLE_PER_CLASS'來獲取每個'FooSomething'和'BarSomething'的表。 –