Hibernate 实现继承实体

在基类中使用如下注解:

@MappedSuperclass
public class BaseA implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name = "id")
	private int id;

        @Column(name="type")
	private String type;

}

子类中使用如下:

@Entity
@Table(name="example")
public class ChildB extends BaseA
{
	private static final long serialVersionUID = 1L;
	@Column(name="name")
	private String name;
}


这里hibernate会将两个类进行聚合 去创建  新的表

但是需要注意的是  这时候 如果你在子类中 重新定义了一个type的话

你对该type的注解声明是有效的,例如 你在childB中重新甚明了一个变量type的话  ,并且设置一致的情况下,

那么你是能够 将两个注解声明同时生效到一个字段中的

如果想这样做的话,

<pre name="code" class="javascript">@Entity
@Table(name="example")
public class ChildB extends BaseA
{
	private static final long serialVersionUID = 1L;
        
        @Id
        @Column(name="type")
	private String type;

	@Column(name="name")
	private String name;
}


 

但这样做是可以的,你对当前的type的设置是会生效的,

但是要注意,不能复写基类中的get函数

在使用ChildB去写入数据库的的时候,会出现 多一个param的错误的


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值