Estoy tratando de asignar dos objetos entre sí mediante una asociación ManyToMany
, pero por alguna razón cuando uso la propiedad mappedBy, hibernate parece estar confundido sobre exactamente lo que estoy mapeando. Lo único extraño de mi mapeo aquí es que la asociación no se realiza en un campo de clave principal en una de las entradas (aunque el campo es único).Hibernate falla al anteponer nombre de clase completamente calificado al nombre de propiedad en asociación ManyToMany
Las tablas son:
Sequence (
id NUMBER,
reference VARCHAR,
)
Project (
id NUMBER
)
Sequence_Project (
proj_id number references Project(id),
reference varchar references Sequence(reference)
)
Los objetos parecen (anotaciones están en el captador, ponerlos en campos de condensar un poco):
class Sequence {
@Id
private int id;
private String reference;
@ManyToMany(mappedBy="sequences")
private List<Project> projects;
}
Y el lado propietario:
class Project {
@Id
private int id;
@ManyToMany
@JoinTable(name="sequence_project",
[email protected](name="id"),
[email protected](name="reference",
referencedColumnName="reference"))
private List<Sequence> sequences;
}
Esto falla con una excepción de mapeo:
property-ref [_test_local_entities_Project_sequences] no se encuentra en la entidad [test.local.entities.Project]
Parece extrañamente anteponer el nombre de clase completo, dividido por guiones. ¿Cómo puedo evitar que esto suceda?
EDITAR: He jugado con esto un poco más. Cambiar el nombre de la propiedad mappedBy emite una excepción diferente, a saber:
org.hibernate.AnnotationException: Referencia mappedBy un desconocido propiedad de entidad de destino: test.local.entities.Project.sequences
Así la anotación se procesa correctamente, pero de alguna manera la referencia de propiedad no se agrega correctamente a la configuración interna de Hibernate.
puede parecer una SQ pero ¿tienen Proyecto getSequences públicas y setSequences públicas en él? – Affe
@Affe Revisaré dos veces, creo que actualmente es público/protegido. – wds
Por las dudas, ¿qué ocurre si cambia el nombre de la propiedad 'secuencias' a otra cosa, p. 'foo'? –