Tengo dos modelos.Hibernate (JPA) múltiple @OneToMany para el mismo modelo
@Entity
public class Student
{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
protected long id;
@?
protected Address homeAddress;
@?
protected Address schoolAddress;
}
@Entity
public class Address
{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
protected long id;
@?
protected List<Student> students;
}
Lo APP/hibernación anotaciones necesito para poner por encima de homeAddress
, schoolAddress
students
y para hacer el trabajo asociación?
Por supuesto que probé muchas cosas y nada funcionó. Por ejemplo, establecer
@ManyToOne
@JoinColumn (name="student_homeAddress_id", updatable = false, insertable = false)
protected Address homeAddress;
@ManyToOne
@JoinColumn (name="student_schoolAddress_id", updatable = false, insertable = false)
protected Address schoolAddress;
y
@OneToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.EAGER)
@JoinColumns({
@JoinColumn(name = "student_homeAddress_id", referencedColumnName = "student_homeAddress_id"),
@JoinColumn(name = "student_schoolAddress_id", referencedColumnName = "student_schoolAddress_id")})
@IndexColumn(name="students_index")
protected List<Student> students;
yealds Unable to find column with logical name: student_homeAddress_id in org.hibernate.mapping.Table(Address) and its related supertables and secondary tables
. también trató usando mappedBy
sino que toma un solo argumento (no se puede hacer mappedBy="student_homeAddress_id, student_schoolAddress_id"
.
también examinó mover el JoinColumns
a la tableta Student
pero no estoy seguro de lo que las anotaciones deben parecerse a OneToMany y ManyToOne ya que tengo varias direcciones ahí que JoinColumns no tiene mucho sentido
lo que hizo el trabajo, pero no estaba creando las asociaciones fue tener:.
@OneToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}, fetch = FetchType.EAGER)
@JoinColumn(name="address_id")
@IndexColumn(name="students_index")
protected List<Student> students;
uso de este, cuando se almacena en la base de datos de los modelos, el student_homeAddress_id y student_schoolAddress_id siempre fueron nulas incluso después de almacenar ambos extremos (el modelo de Estudiante y Dirección).
Mi pensamiento es que en la mesa Address
habrá 3 columnas adicionales: student_homeAddress_id (el id del Estudiante en la Tabla de alumnos para el homeAddress), student_schoolAddress_id (el id del Estudiante en la Tabla de alumnos para el schoolAddress) y students_index (la ubicación basada en 0 en la lista students
). Eso debería ser suficiente, ¿correcto?
¿Alguna idea?
¡Muchas gracias!