我有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映射此表?
答案 0 :(得分:1)
您将无法在纯JPA中映射它。它需要不同的外键才能在JPA中映射:一个引用公司,另一个引用Person。
使用Hibernate,您可以使用Any注释进行映射。
答案 1 :(得分:0)
在EclipseLink中,您可以使用@VariableOneToOne关系来映射它。
否则,您可以使用TABLE_PER_CLASS继承,或更改数据模型。