JPA将业务密钥替换为主密钥

时间:2019-03-03 09:11:23

标签: java jpa jpa-2.1

我正在使用旧版数据库。

我正在使用JPA 2.x

我有:

  • 包含有PK +自然业务密钥的域对象的BUSINESS_ORDER表
  • 一个表BUSINESS_LEDGER,其中包含带有PK +复合自然业务密钥的域对象
  • 包含两个先前表之间的映射的表INTEGRATION:PK + FK_BUSINESS_ORDER + FK_BUSINESS_LEDGER

在我的JPA实体中:

  • 对于BUSINESS_ORDER实体,我想隐藏ID,以便公开Business Key。公开业务而不是基础架构密钥。
  • 对于BUSINESS_LEDGER实体,也是一样。封装ID并公开一个Buiness Key
  • 对于集成实体,我想使用业务密钥而不是ID。我真的不想映射关系。仅引用,因为从业务角度来看这没有意义。仅保留引用(业务密钥)是相关且有用的。集成实体用于查询和保留链接(如联接表:D)

我的问题是:如何设计INTEGRATION实体?我实例化一个新的Integration实体,设置业务密钥(订单代码和分类帐代码)并保存。在保存过程中,代码会被转换为PK和voila。加载INTEGRATION实体时,PK将转换为其代码。

  • 如果我不使用@ManyToOne注释;
  • 如果我使用@Converter,则需要将业务密钥转换为PK,并且每次在Converter(ewwww)中都需要进行查询。似乎有点矫kill过正或复杂。
  • 如果我使用@SecondaryTable(此注释不是默认用例)。我真的不知道如何实现

更新1: 例如,答案可能是将@Embeddable与@OneToOne一起用于ORDER实体,或者在可嵌入对象内部部分使用Order实体(仅ID /代码)。

0 个答案:

没有答案