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,如上所示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值