如何使用JPA从单列映射到多个表

时间:2012-11-03 14:31:55

标签: java jpa entity-relationship

我有5个表MainReg,Person,PersonInfo,Company,CompanyInfo

CREATE TABLE [MainReg] (
[IdMainReg] [uniqueidentifier] NOT NULL,
[PersonalObjectId] [int] NULL,
[OwnerId] [nvarchar](36) NULL,
...)

CREATE TABLE [Person] (
[IdPerson] [uniqueidentifier] NOT NULL,
[PersonInfoId] [nvarchar](36) NULL,
...)

CREATE TABLE [PersonInfo] (
[IdPersonInfo] [uniqueidentifier] NOT NULL,
...)

CREATE TABLE [Company] (
[IdCompany] [uniqueidentifier] NOT NULL,
[CompanyInfoId] [nvarchar] NULL,)
...)

CREATE TABLE [CompanyInfo] (
[IdCompanyInfo] [uniqueidentifier] NOT NULL,
...)
如果[MainReg.PersonalObjectId] = 1,则

[MainReg.OwnerId]列引用表[Company]中的行,如果[MainReg.PersonalObjectId] = 2,则引用表[Person]中的行。

我的问题是,如何使用JPA映射此表?

2 个答案:

答案 0 :(得分:1)

您将无法在纯JPA中映射它。它需要不同的外键才能在JPA中映射:一个引用公司,另一个引用Person。

使用Hibernate,您可以使用Any注释进行映射。

答案 1 :(得分:0)

在EclipseLink中,您可以使用@VariableOneToOne关系来映射它。

否则,您可以使用TABLE_PER_CLASS继承,或更改数据模型。