java—当我们在实体中使用嵌套的joincolumn时,sql数据库中会发生什么

pw136qt2  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(307)

我正在浏览一些代码,它使用嵌套 @JoinColumn 对于其中一个协会,如下所示:

@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumns({@JoinColumn(name = "QuestId"), @JoinColumn(name = "GuildId")})
private GuildQuests guildQuest;

我明白,当我做以下事情时:

@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumns(name="GuildQuestId")
private GuildQuests guildQuest;

我正在创建一个名为 GuildQuestId 并且它对实体具有外键约束 GuildQuests .
但是,嵌套的 @JoinColumn (第一个代码段)你认为呢?

yi0zb3m4

yi0zb3m41#

您的第一个代码片段是说您为同一关联指定了多个外键。
例子:

@ManyToOne
@JoinColumns({
    @JoinColumn(name="ADDR_ID", referencedColumnName="ID"),
    @JoinColumn(name="ADDR_ZIP", referencedColumnName="ZIP")
})
public Address getAddress() { return address; }

edit:实际上,您并没有在数据库中创建任何带有(两个示例)的外键。例如,如果使用hibernate,hibernate不会在数据库级别本身创建任何外键。

相关问题