Java JPA@JoinColumn在连接非主键列时出现问题
我想基于单向联接连接表,下面是我的代码:Java JPA@JoinColumn在连接非主键列时出现问题,java,jpa,Java,Jpa,我想基于单向联接连接表,下面是我的代码: Class Person { @id String person_sk; int person_id; String Person_name; @OneToMany @joinColumn (name="person_reference_id") List<address> getAddresses() {} } class Address { @id int person_reference_id (referred from
Class Person {
@id
String person_sk;
int person_id;
String Person_name;
@OneToMany
@joinColumn (name="person_reference_id")
List<address> getAddresses() {}
}
class Address
{
@id
int person_reference_id (referred from Person);
@id
int address_id;
@id
int phone_id;
String street_name, zip_code;
}
班级人员{
@身份证
串人;
国际个人识别码;
字符串人名;
@独身癖
@joinColumn(name=“person\u reference\u id”)
列出getAddresses(){}
}
班级地址
{
@身份证
int person\u reference\u id(由person提供);
@身份证
int地址_id;
@身份证
国际电话号码;
字符串街道名称、邮政编码;
}
现在,当我执行getAddress时,它不起作用,因为我的联接基于person_ref_id,person类中的@id(primaryKey)列是person_sk
如果我使用referencedColumn,那么它也不起作用
我怎样才能让它工作
规范化数据库以使用公共PK-FK关系。如果需要-定义复合主键
我怎样才能让它工作
规范化数据库以使用公共PK-FK关系。如果需要-定义复合主键。异常数据模型,您可能需要重新考虑它 此外,通常最好使用mappedBy和逆@manytone来定义@OneToMany
JPA不直接支持您的数据模型,但如果您使用的是EclipseLink,则可以使用描述符自定义器定义OneToNameMapping,并使用您需要的任何外键或联接条件。异常数据模型,您可能需要重新考虑它 此外,通常最好使用mappedBy和逆@manytone来定义@OneToMany
JPA不直接支持您的数据模型,但如果您使用的是EclipseLink,您可以使用DescriptorUserMizer定义OneToNameMapping,并使用您需要的任何外键或连接条件。这是正确的,但框架为什么要放弃你去实现这种奇怪的情况真的很奇怪。当它是理想场景时,这一切都是好的,但每次都没有得到理想场景,几乎没有任何可以应用到数据模型的更改。我认为他们不支持这种荒谬的东西是好的。只是,如果他们要解决与其他层有关的每个特性,那么这将是过度设计的。这里有一个解决方法,当您的旧数据库实际上早于Hibernate,并且包含数以百万计的记录和在数十台服务器上运行了15年的旧业务逻辑时,您可以尝试告诉某人规范化他们的数据库不起作用,但框架为什么要放弃你去实现这种奇怪的情况真的很奇怪。当它是理想场景时,这一切都是好的,但每次都没有得到理想场景,几乎没有任何可以应用到数据模型的更改。我认为他们不支持这种荒谬的东西是好的。只是,如果他们要解决与其他层有关的每个特性,那么这将是过度设计的。这里有一个解决方法,当您的旧数据库实际上早于Hibernate,并且包含数百万条记录和在数十台服务器上运行了15年的旧业务逻辑时,您可以尝试告诉某人规范化他们的数据库不起作用。这是真的,但这是无法修改的,因为它来自某些外部应用程序,但这不是jpa frameworkits支持的适当功能,这是真的,但由于它来自某些外部应用程序,因此无法修改,但这不是jpa framework支持的适当功能