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'的表。 –