Sto cercando di mappare due oggetti tra loro utilizzando un'associazione ManyToMany
, ma per qualche ragione quando uso la proprietà mappedBy, Hibernate sembra essere sempre confuso su esattamente quello che sto mappando. L'unica cosa strana della mia mappatura qui è che l'associazione non viene eseguita su un campo chiave primaria in una delle voci (il campo è però unico).Hibernate in mancanza anteponendo nome completo della classe a nome della proprietà riguardante l'associazione ManyToMany
Le tabelle sono:
Sequence (
id NUMBER,
reference VARCHAR,
)
Project (
id NUMBER
)
Sequence_Project (
proj_id number references Project(id),
reference varchar references Sequence(reference)
)
Gli oggetti assomigliano (annotazioni sono sul getter, metterli sui campi di condensare un po '):
class Sequence {
@Id
private int id;
private String reference;
@ManyToMany(mappedBy="sequences")
private List<Project> projects;
}
E il lato possessore:
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;
}
Questo non riesce con un MappingException:
012.property-ref [_test_local_entities_Project_sequences] non trovato sul entità [test.local.entities.Project]
Sembra di anteporre stranamente il nome completo della classe, divise da caratteri di sottolineatura. Come posso evitare che ciò accada?
MODIFICA: Ho giocato un po 'di più con questo. Cambiare il nome della proprietà mappedBy genera un'eccezione diversa, vale a dire:
org.hibernate.AnnotationException: mappedBy riferimento a un ignoto proprietà entità di destinazione: test.local.entities.Project.sequences
Così l'annotazione viene elaborata correttamente, ma in qualche modo il riferimento alla proprietà non viene aggiunto correttamente alla configurazione interna di Hibernate.
può sembrare un SQ, ma fa del progetto hanno getSequences pubblici e setSequences pubbliche su di esso? – Affe
@Affe I'll doubleckeck, penso che al momento sia pubblico/protetto. – wds
Nel caso, cosa succede se si rinomina la proprietà 'sequences' in qualcos'altro, ad es. 'Foo'? –