#java #sql #spring #many-to-one
#java #sql #spring #многие к одному
Вопрос:
Я просматриваю некоторый код, и он использует вложенный @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
(первый фрагмент кода)?
Ответ №1:
В вашем первом фрагменте говорится, что вы указываете несколько внешних ключей для одной и той же ассоциации.
Пример:
@ManyToOne
@JoinColumns({
@JoinColumn(name="ADDR_ID", referencedColumnName="ID"),
@JoinColumn(name="ADDR_ZIP", referencedColumnName="ZIP")
})
public Address getAddress() { return address; }
Редактировать:
На самом деле вы не создаете никаких внешних ключей (оба примера) в базе данных. Если вы используете, например, Hibernate, Hibernate не создает никаких внешних ключей на самом уровне базы данных.