Tengo un modelo simple con un objeto Question
y Choice
.¿Qué significa el propietario de la relación en una relación bidireccional?
- Una pregunta tiene MANY CHOICE (S).
- muchas opciones tiene una pregunta
Hay dos maneras de implementar que con Hibernate
Implementación Uno: El lado es propietario elección
Question.java
@OneToMany (mappedBy="question")
private Set choices = new HashSet();
Choice.java
@ManyToOne
@JoinColumn (name="QUESTION_ID")
private Question question;
Implementación Dos: El lado es propietario Pregunta
Question.java
@OneToMany
@JoinColumn (name = "QUESTION_ID")
private Set choices = new HashSet();
Choice.java
@ManyToOne
@JoinColumn (name="QUESTION_ID", updatable = false, insertable = false)
private Question question;
¿Cuál es la diferencia entre los dos implementación?
Demuestre que estoy equivocado, pero creo que cambiar el lado no propietario no se refleja automáticamente en la base de datos (usando la comprobación sucia), mientras que modificar el lado propietario sin modificar el otro * es *. Tenga en cuenta que en este caso el lado * many- * es la opción natural para el propietario, ya que tiene una clave externa en el nivel de la base de datos. –
¿No olvidó poner el argumento tipo en el conjunto de opciones? E.G: Establecer choises. Si no lo usas, ¿cómo hibernate puede determinar dónde (qué clase?) Para encontrar el atributo "pregunta" al que te refieres en la anotación mapeada ... o hibernate es consciente de eso de alguna manera ... o no lo hago. Sé cómo funciona esto detrás de las cortinas. –
Victor