Java 如何在JPA中将OneTONE映射为ZeroRonneTONE反向引用?
我有一个遗留应用程序,它有一个实体关系,如下所示。我将字段的名称更改为不太真实的值,并将其缩减为仅相关字段Java 如何在JPA中将OneTONE映射为ZeroRonneTONE反向引用?,java,jpa,one-to-one,Java,Jpa,One To One,我有一个遗留应用程序,它有一个实体关系,如下所示。我将字段的名称更改为不太真实的值,并将其缩减为仅相关字段 CREATE TABLE`billing\u target`( `billingTargetID`int(11)不为空, `targetType`char(5)不为空, `targetID`int(11)不为空 主键(`billingTargetID`) ); 创建表“Client”( `clientID`int(11)不为空, `名称`瓦查尔(200), `颜色'varchar(200
CREATE TABLE`billing\u target`(
`billingTargetID`int(11)不为空,
`targetType`char(5)不为空,
`targetID`int(11)不为空
主键(`billingTargetID`)
);
创建表“Client”(
`clientID`int(11)不为空,
`名称`瓦查尔(200),
`颜色'varchar(200),
`shape`varchar(200)
主键(`clientID`),
约束“fk\U客户端\U账单目标”
外键(`clientID`)
引用'billing\u target'('targetID`)
);
我最近的一次尝试,在保存时出现问题,因为它会导致null实体键异常
@数据
@实体
公共类BillingTarget实现可序列化{
@身份证
@列(name=“billingargetid”)
私有整数id;
@列(name=“targetID”,null=false)
私有整数targetID;
@列(name=“targetType”,null=false)
私有字符串类型;
}
@资料
@实体
公共类客户端实现可序列化{
@身份证
@列(name=“clientID”)
私有整数id;
@奥内托内
@JoinColumn(name=“clientID”)
@MapsId(“targetID”)
私人计费目标计费目标;
私有字符串名称;
私有字符串颜色;
私有字符串形状;
}
这里是PlantUML代码,如果有兴趣的话
@startuml
hide circle
entity BillingTarget {
* billingTargetID <<generated>>
--
* targetType
* targetID <<unique>>
}
entity Client {
* clientID <<fk>>
--
* name
color
shape
}
BillingTarget ||--o| Client : "targetID:clientID"
@enduml
@startuml
隐藏圈
实体计费目标{
*比林塔吉蒂
--
*目标型
*目标
}
实体客户端{
*客户
--
*名字
颜色
形状
}
BillingTarget | |--o |客户:“targetID:clientID”
@enduml
我已经在考虑使用一个MappedSuperclass
,但现在它只是一种类型(尽管可能更多)。其次,计费目标可能是zero
和notnull
,因为已经存在一个notnull约束