我正在将Play Framework 1.2.4与PostgreSQL
和JPA
一起使用。我想拥有一个模型层次结构,并看到有一些替代方法。
我有一个基类(抽象的)和两个扩展该基类的具体类。我不想在拥有具体的类(class)的同时坚持这个基础类(class)。在基类中,我还有另一个Model类作为属性,换句话说,我的基类中有@ManyToOne
关系。
我的问题是实现此目标的最佳方法是什么?使用@MappedSuperclass
策略使用@Inheritance
或TABLE_PER_CLASS
?我有点困惑,因为它们看起来几乎相等。
我还担心将来可能会遇到的查询和性能问题。
最佳答案
MappedSuperClass必须用于继承属性,关联和方法。
当您有一个实体和几个子实体时,必须使用实体继承。
您可以通过回答以下问题来判断您是否需要一个:模型中是否存在其他一些可以与基类相关联的实体?
如果是,则基类实际上是一个实体,您应该使用实体继承。如果否,则基类实际上是一个包含几个不相关实体共有的属性和方法的类,您应该使用映射的父类(super class)。
例如:
关于java - JPA:实现模型层次结构-@MappedSuperclass与@Inheritance,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9667703/