我需要扩展一个具有相同特征的实体,而不使用抽象类。
我可以编写类似下面的内容吗?
@Entity
@Table(name="ABC")
@SequenceGenerator(sequenceName="SEQ_ABC",name="idGenerator",allocationSize=1)
public class Abc {
.. // define members
}
@Entity
@Table(name="EX_ABC")
public class ExAbc extends Abs {
.. // define extras..
}
事先提前
答案 0 :(得分:17)
是的,这个没有任何问题。不过,您应该查看inheritance annotation.
问题是什么:你有一个表“Abc”,其中包含field1,filed2;然后你有ExAbc,其中包含“Abc”字段和adition field3。 现在,如果你从数据库的角度思考,那么这个系统应该对这两个类做些什么呢?将它们放入一个表中,对于所有“Abc”类型的行,field3 = null?或者将它们分成两个不同的表格?或者将公共字段放在一个表中,并为附加的字段3创建第二个字段?
每个解决方案都有其优点和缺点,您可以阅读我发布的链接,然后根据您的情况决定哪种方式最好。
(默认我认为是加入的策略,但我并不指望每个数据库都是如此)
答案 1 :(得分:0)
见
似乎你必须有一个单独的抽象类。并且可能没有技术障碍。