1

我有 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 映射这些表?

4

2 回答 2

1

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

使用 Hibernate,您将能够使用Any注释对其进行映射。

于 2012-11-03T15:04:35.370 回答
0

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

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

于 2012-11-05T15:12:52.423 回答