วิธีแมปกับหลายตารางจากคอลัมน์เดียวโดยใช้ JPA

ฉันมี 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.ObjectId] อ้างอิงแถวในตาราง [บริษัท] ถ้า [MainReg.PersonalObjectId] = 1 และแถวในตาราง [Person] ถ้า [MainReg.PersonalObjectId] = 2

คำถามของฉันคือ จะแมปตารางนี้โดยใช้ JPA ได้อย่างไร


person Rustem    schedule 03.11.2012    source แหล่งที่มา
comment
ดูที่ EclipseLink การสืบทอดตารางที่เข้าร่วม   -  person codeturner    schedule 11.05.2013


คำตอบ (2)


คุณจะไม่สามารถแมปสิ่งนั้นใน JPA ล้วนๆ ได้ จะต้องมีคีย์ต่างประเทศที่แตกต่างกันเพื่อให้สามารถแมปสิ่งนั้นใน JPA: อันที่จะอ้างอิงถึงบริษัท และอีกอันที่จะอ้างอิงถึงบุคคล

ด้วย Hibernate คุณจะสามารถแมปสิ่งนั้นได้โดยใช้ คำอธิบายประกอบใดๆ

person JB Nizet    schedule 03.11.2012
comment
ขอบคุณสำหรับการตอบกลับที่รวดเร็ว ฉันใช้ EclipseLink ฉันเดาว่าฉันต้องดูไฮเบอร์เนต - person Rustem; 03.11.2012
comment
ฉันอยากจะลองแก้ไขการออกแบบฐานข้อมูลของคุณ - person JB Nizet; 03.11.2012
comment
น่าเสียดายที่สิ่งนี้เป็นไปไม่ได้ เนื่องจากฉันกำลังทำงานกับฐานข้อมูลที่ใช้งานอยู่แล้ว ฉันเข้าถึงมันจากระยะไกล - person Rustem; 05.11.2012

ใน EclipseLink คุณสามารถใช้ความสัมพันธ์ @VariableOneToOne เพื่อแมปสิ่งนี้

มิฉะนั้น คุณอาจใช้การสืบทอด TABLE_PER_CLASS ได้ หรือเปลี่ยนโมเดลข้อมูลของคุณได้

person James    schedule 05.11.2012