Java JPA引用两个(或多个)表的单个外键ID

Java JPA引用两个(或多个)表的单个外键ID,java,jpa,Java,Jpa,这个问题真的很简单。这是在Java上使用JPA,我要做的是创建一个包含和列的表,该列可以引用两个表中的一个。为了更清楚,我可以有一个“用户”表和一个“临时人员”表。我不想污染我的用户表(因为我使用它也是为了安全,另外还有其他信息)。现在让我们假设我有第三张桌子叫做“游戏”。现在,当有人与某人比赛时,他们可以与系统中已经存在的某个人(即用户)或某个人进行比赛,他们可以在其中键入名称,并创建和使用TempPerson的新条目。因此,player2(或player1)的游戏将是一个映射到User.id

这个问题真的很简单。这是在Java上使用JPA,我要做的是创建一个包含和列的表,该列可以引用两个表中的一个。为了更清楚,我可以有一个“用户”表和一个“临时人员”表。我不想污染我的用户表(因为我使用它也是为了安全,另外还有其他信息)。现在让我们假设我有第三张桌子叫做“游戏”。现在,当有人与某人比赛时,他们可以与系统中已经存在的某个人(即用户)或某个人进行比赛,他们可以在其中键入名称,并创建和使用TempPerson的新条目。因此,player2(或player1)的游戏将是一个映射到User.id或temperson.id的id。现在我明白了,可能需要在游戏中设置一个确定栏来确定Id的用途,但我希望JPA能以某种方式满足它。任何想法都会有帮助,我可以使用继承,但不确定

下面是另一个例子:

假设我有一个表,其中包含有关图像=>id、分辨率、宽度、高度、位置、桶等信息。。。。id在使用的表中,表名在使用的表中。现在,这一张表可以保存配置文件、位置等的图像。。。配置文件和位置将有一个id引用图像表,但我也希望图像表有一个id返回到图像使用的位置,哪个表和哪个id正在使用它

几乎有人问我“一对多表”的解决方案。虽然我可以有很多在桌子之间等。。。虽然许多DBA可能会诅咒这种想法,但对于如此简单的事情似乎有些过分。它可以最大限度地减少查询、表格数量等


提前感谢

可以使用单个FK以多个表为目标。为此,您必须使用
@JoinColumn

@Entity
public class User{

 @OneToOne
 @JoinColumn("universalId", targetEntity=Avatar.class)
 private Avatar

 @oneToMany
 @JoinColumn("universalId", targetEntity=Log.class)
 private List<Log> logs;

}
@实体
公共类用户{
@奥内托内
@JoinColumn(“universalId”,targetEntity=Avatar.class)
私人化身
@独身癖
@JoinColumn(“universalId”,targetEntity=Log.class)
私有列表日志;
}
这将使用
User
表的
universalId
列从
Avatar
Log
表中查找相关记录


然而,这是一种反模式,当必须更改universalId等时,会导致许多后果。1 column=1 FK-这样做。

可以使用单个FK以多个表为目标。为此,您必须使用
@JoinColumn

@Entity
public class User{

 @OneToOne
 @JoinColumn("universalId", targetEntity=Avatar.class)
 private Avatar

 @oneToMany
 @JoinColumn("universalId", targetEntity=Log.class)
 private List<Log> logs;

}
@实体
公共类用户{
@奥内托内
@JoinColumn(“universalId”,targetEntity=Avatar.class)
私人化身
@独身癖
@JoinColumn(“universalId”,targetEntity=Log.class)
私有列表日志;
}
这将使用
User
表的
universalId
列从
Avatar
Log
表中查找相关记录

然而,这是一种反模式,当必须更改
universalId
等时,会导致很多后果。1 column=1 FK-这样做