首页 > 解决方案 > 当我们在实体中使用嵌套的 JoinColumn 时,SQL 数据库中会发生什么

问题描述

我正在浏览一些代码,它使用嵌套@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表中的名称创建一个列,并且它具有与 entity 的外键约束GuildQuests

但是,嵌套@JoinColumn(第一个代码片段)会做什么?

标签: javasqlspringmany-to-one

解决方案


Your first snippet is saying that you specify multiple foreign keys for the same association.

Example:

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

Edit: You're actually not creating any foreign keys with (both example) in the database. If you use for example Hibernate, Hibernate does not create any foreign keys on database level itself.


推荐阅读