Java可扩展实体_java – 是否可以通过扩展一个POJO来构建一个JPA实体?
JPA規范說明
Entities may extend non-entity classes as well as entity classes, and non-entity classes may extend entity classes.
@ javax.persistence.MappedSuperclass注釋允許您定義此類映射
@MappedSuperclass
public class MyThing implements Serializable {
private int myNumber;
private String myData;
// getter's and setter's
}
和
@Entity
@Table(name="MY_THING")
public class MyThingEntity extends MyThing {
}
如JPA規范所述
The MappedSuperclass annotation designates a class whose mapping information is applied to the entities that inherit from it.
和
A class designated with the MappedSuperclass annotation can be mapped in the same way as an entity except that the mappings will apply only to its subclasses since no table exists for the mapped superclass itself.
如果你需要覆蓋由MyThing定義的一些屬性,使用@AttributeOverride(當你想覆蓋單個屬性)或@AttributeOverrides(當你想覆蓋多個屬性)
@Entity
@Table(name="MY_THING")
@AttributeOverride(name="myData", column=@Column(name="MY_DATA"))
public class MyThingEntity extends MyThing {
}
和
@Entity
@Table(name="MY_OTHER_THING")
@AttributeOverrides({
@AttributeOverride(name="myData1", column=@Column(name="MY_DATA_1")),
@AttributeOverride(name="myData2", column=@Column(name="MY_DATA_2"))
})
public class MyOtherThingEntity extends MyThing {
}
如果不想更改基類,可以使用xml將其定義為@MappedSuperClass
注意:默認情況下,持久性提供程序將在META-INF目錄中查找名為orm.xml的文件
沒有其他的。如果要覆蓋屬性,請使用@AttributeOverride,如上所示
總結
以上是生活随笔為你收集整理的Java可扩展实体_java – 是否可以通过扩展一个POJO来构建一个JPA实体?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java编写github监控_【原创工具
- 下一篇: java字符排序规则_java 重写排序