gpt4 book ai didi

Hibernate 简单 JoinTable 不使用实体

转载 作者:行者123 更新时间:2023-12-02 23:46:46 26 4
gpt4 key购买 nike

我正在尝试在 Hibernate 中运行一个简单的 JoinTable 操作,它让我感到不舒服。我有一张表代表一个名为“Person”的实体。我有另一个代表社会安全号码的表(例如)。我希望将社会安全号码作为字符串(它是 VARCHAR2)作为 PersonEntity 的属性。没有以下代码,PersonEntity 也可以正常工作。这就是我正在尝试做的事情。

@JoinTable(name = "PERSON_ID_X_SSN", 
joinColumns = {@JoinColumn(name = "PERSON_ID")})
@Column(name="SSN", nullable=false, updatable=false)
private String social;

PERSON_ID_X_SSN 表很简单:

PERSON_ID, SSN

没有这段代码一切都可以正常工作。一旦我将它添加到整个实体中,整个实体就为空。我不想为 PERSON_ID_X_SSN 创建单独的实体...请帮忙!谢谢

最佳答案

@JoinTable 用于指定用于保存实体之间关系的表。

在这种情况下,实体之间没有关系,但一个实体应该持久保存到两个表中。 @SecondaryTable是用于此目的的注释。想法是为实体指定辅助表(或通过@SecondaryTables 指定多个),并在应使用主表以外的表来持久化属性时在@Column 注释中显式提及表的名称。

在您的情况下,类似以下内容将起作用:

@Entity
@Table(name="CUSTOMER")
@SecondaryTable(
name="PERSON_ID_X_SSN",
pkJoinColumns=@PrimaryKeyJoinColumn(name="PERSON_ID"))
public class Person {
@Column(table="PERSON_ID_X_SSN", name="SSN")
private String social;
...
}

}

关于Hibernate 简单 JoinTable 不使用实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9958290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com