【发布时间】:2018-03-23 19:00:39
【问题描述】:
我遇到了一个问题,我如何创建扩展 多个 基本抽象类的 JPA 实体(无需创建额外的表)。我知道有一个注解@MappedSuperclass,但只要我们使用extends,它就可以只创建一个基类,并且多重继承不是Java特性。
例如,我有两个基地:
@MappedSuperclass
public abstract class Authored {
@ManyToOne
private User user;
}
和
@MappedSuperclass
public abstract class Dated {
private String creationDate;
}
我希望我的一些模型将仅扩展Authored,一些——仅扩展Dated,还有一些——两者兼而有之。
虽然只能写
@Entity
public class MyEntity extends Authored {
...
}
或
@Entity
public class MyEntity extends Dated {
...
}
一些讨论建议沿行继承类(例如Authored 和AuthoredAndDated),但这似乎太脏了,这些基础在逻辑上都不能扩展另一个。
添加
我必须注意,这种风格在 Django 等其他框架中得到支持(由于 python 中的多重继承),所以奇怪的是 JPA 不支持它。
【问题讨论】:
-
在 Java 中你不能“扩展”多个类。 JPA 只是持久化你的类,因为你不能定义这样的类......