@MappedSuperclass 含义以及子类重写父类字段名

4 篇文章 0 订阅

1.@MappedSuperclass 含义

1.1)基于代码复用模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。例如,数据库表中都需要id来表示编号,id是这些映射实体类的通用的属性,交给jpa统一生成主键id编号,那么使用一个父类来封装这些通用属性,并用@MappedSuperclas标识。

1.2)注意:

1.2.1)标注为@MappedSuperclass的类将不是一个完整的实体类,他将不会映射到数据库表,但是他的属性都将映射到其子类的数据库字段中。

1.2.2)标注为@MappedSuperclass的类不能再标注@Entity或@Table注解,也无需实现序列化接口

@MappedSuperclass
public abstract class Test extends Entitlement
{
    private static final long serialVersionUID = 858491978870675469L;


    @Column(name = HanaDbColumnConstants.CREATED_BY, nullable = false)
    private String createdBy;


    @Column(name = HanaDbColumnConstants.CREATED_ON, nullable = false)
    private Timestamp createdOn;


    @Column(name = HanaDbColumnConstants.CHANGED_BY, nullable = false)
    private String changedBy;


    @Column(name = HanaDbColumnConstants.CHANGED_ON, nullable = false)
    private Timestamp changedOn;

}

2.子类重写父类字段名

2.1)In some cases, we don't want to use some fields which they are extending from super class. So ,in this case, we have to reuse these field. Here is the way:

eg: If you want to rename "createdBy" field of super class "Test" to "HanaDbColumnConstants.GROUP_CODE"

@Entity(name = HanaDbEntityConstants.ENTITY_ENTITLEMENT_REPOSITORY_INFO)
@Table(name = HanaDbViewConstants.VIEW_ENTITLEMENT_REPOSITORY_INFO)
@AttributeOverride(name = "createdBy", column = @Column(name = HanaDbColumnConstants.GROUP_CODE))
public class EntitlementRepositoryInfoView extends Test
{

}

Ok, now,you can have a try.





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值