一个实体映射多张表

场景:
遇上一个不确定的变更需求,这个需求其实挺简单,对一个表新增若干个字段,并且修改页面结构。因为需求属于不确定带实验性质的,所以在开发过程中不能破坏原有功能的正常工作,开发完成后还可以替换原有功能。
思路:
这个实现比较简单,只有新增字段,没有删除字段,所以在开过中,我采用了扩展表的方式实现变更需求,这个不会破坏原有表结构,且还是采用原有的entity做开发。也就是用一个entity操作多张表而已。
实施1:
最初使用inheritance继承关系做多表操作,但是最后失败了,失败的原因是,原entity中带有OneToMany这种级联关系。主表加载原表的过程发生sql拼写异常错误,这个具体如果加载的暂时不清楚。
实施2:
之后,使用SecondaryTable注解,配置方式简单,先用@secondaryTable声明一个或者多张附加表,然后@column映射附表字段。之后就算完成了。通过一个实体操作多张表,完全感觉不出来的。替换原始能也变得简单了,只需将主表和附表合并到一张表,之后删掉@secondaryTable和column注解就可以了。后台代码完全不需要变动。

@Entity
@Table(name="CUSTOMER")
@SecondaryTable(name="CUST_DETAIL",
pkJoinColumns=@PrimaryKeyJoinColumn(name="CUST_ID"))
public class Customer { ... }

Example 2: Single secondary table with multiple primary key columns.

@Entity
@Table(name="CUSTOMER")
@SecondaryTable(name="CUST_DETAIL",
pkJoinColumns={
@PrimaryKeyJoinColumn(name="CUST_ID"),
@PrimaryKeyJoinColumn(name="CUST_TYPE")})
public class Customer { ... }

[url]http://docs.oracle.com/javaee/5/api/index.html?javax/persistence/OneToOne.html[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值