Ich habe zwei Tabellen, Junge und Mädchen. Nehmen wir an, dass Jungen- und Mädchentische eine Beziehung von vielen zu vielen haben. In meiner Jungen Einheit habe ich den folgenden Satz definiert:Hibernate konnte Resultset Ausnahme nicht extrahieren - viele zu viele Relation
@ManyToMany(fetch = FetchType.LAZY)
public Set<Girl> getGirls() {
return girls;
}
den nun in der Mädchen-Einheit habe ich den folgenden Satz definiert:
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "boy_girl", joinColumns = {@JoinColumn(name = "girl_id")}, inverseJoinColumns = {@JoinColumn(name = "boy_id")})
public Set<Boy> getBoys() {
return boys;
}
Ich versuche, die Mädchen von den Jungen retreive. Mit anderen Worten, ich möchte eine Liste von Mädchen für eine bestimmte BoyId. Hier ist die HQL ich verwende und ich bekomme die Fehler bereits erwähnt:
String query = "FROM Girl g inner join Boy b where b.boyId = :boyId";
Session session = getSessionFactory().getCurrentSession();
Set<Girl> girlSet = new HashSet<Girl>();
girlSet = (Set<Interaction>) session.createQuery(query).setParameter("boyId", boyId).getResultList();
Hier sind die genauen Fehler:
HTTP Status 500 - Request processing failed; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
Irgendwelche Ideen? Vielen Dank!!
Ist die Spalte "girl_id" Sie existieren wird Bezug join? – Vollmilchbb
Das Set girlSet = new HashSet (); 'kompiliert? –
davidxxx
Sie können die Eigenschaft 'show sql' in Hibernate aktivieren, um die generierte Abfrage zu sehen und zu beobachten, was sie von der Datenbank erhält. Wenn Hibernate nicht tatsächlich in die Abfragegenerierungsphase kommt, wäre diese Tatsache auch eine gute Information. –