java - relaciones - relacion onetoone jpa
Hibernate reasignado relaciones de superclase y anulaciĆ³n (2)
Tengo un MappedSuperClass, Participante abstracto, que se extiende por tres tipos de ''Participante''. Luego, cada uno usa su propio tipo de ''Proyecto'', también un MappedSuperClass abstracto. Sin embargo, quiero que la clase base sepa sobre Proyectos para poder escribir código genérico para interactuar con los Participantes. ¿Cómo especifico esto usando las anotaciones de Hibernate? y ¿cómo lo anularé en las clases ExtendedParticipant y ExtendedProject?
Cada tipo de participante, y cada tipo de proyecto, tienen sus propias tablas de base de datos con los datos y los identificadores existentes (no únicos en todas las tablas) que no puedo modificar.
El siguiente código me da el error IDE "Muchos a un atributo no deberían ser ''Superclase mapeada''".
@MappedSuperclass
public abstract class Participant implements Persistable {
...
@ManyToOne
@JoinColumn(name = "project_id")
public Project getProject() {
return project;
}
public void setProject(Project project) {
this.project = project;
}
...
}
y la clase Proyecto es muy similar con el mismo problema:
@MappedSuperclass
public abstract class Project implements Persistable {
...
@OneToMany
public List<Participant> getParticipants() {
return participants;
}
public void setProject(List<Participant> participants) {
this.participants = participants;
}
...
}
Parece posible tener relaciones definidas a través de la superclase asignada de acuerdo con el siguiente
Una superclase mapeada no es una Entidad, no puede ser parte de una asociación. Así que mapea tus clases como entidades e introduce una superclase mapeada "arriba" de ellas o utiliza una estrategia TABLE_PER_CLASS
.