Estoy revisando un código y usa @JoinColumn anidado para una de las asociaciones, de la siguiente manera:
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumns({@JoinColumn(name = "QuestId"), @JoinColumn(name = "GuildId")}) private GuildQuests guildQuest;Entiendo que cuando hago algo como lo siguiente:
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JoinColumns(name="GuildQuestId") private GuildQuests guildQuest; Estoy creando una columna con el nombre GuildQuestId en la tabla y tiene una restricción de clave externa con la entidad GuildQuests .
Sin embargo, ¿qué hará el @JoinColumn anidado (primer fragmento de código)?
Su primer fragmento dice que especifica varias claves externas para la misma asociación.
Ejemplo:
@ManyToOne @JoinColumns({ @JoinColumn(name="ADDR_ID", referencedColumnName="ID"), @JoinColumn(name="ADDR_ZIP", referencedColumnName="ZIP") }) public Address getAddress() { return address; }Editar: en realidad no está creando ninguna clave externa con (ambos ejemplos) en la base de datos. Si usa, por ejemplo, Hibernate, Hibernate no crea ninguna clave externa en el nivel de la base de datos.