Hibernate Kriterien : Auswahl aus zwei Tabellen mit Fremdschlüssel-Beziehung?
Ich habe in meiner mysql-Datenbank 2 Tabellen :
1.teacher(id(pk),name,phone,email)
2.student(id(pk),teacher'sid(FK),name,phone,email)
Die student-Tabelle hat einen Fremdschlüssel , Lehrer'sid ,dass refrences zum Lehrer.id .
Wählen Sie die Lehrer, daß Ihre id(Lehrer /innen.id) ist dasselbe wie (student.Lehrer'sid), wo student.name = "Steven".
Habe ich aus zwei Klassen mit dem gleichen class Namen und Eigenschaften der Tabelle,und ich habe so konfiguriert das mapping.
@Entity
class teacher {
@Id
int id;
String name;
String phone;
String email;
}
@Entity
class student {
@Id
int id;
int teachersid;
String name;
String phone;
String email;
}
Ich bin in der Lage, wählen Sie die Schüler, dass sein name "steven" von:
Criteria q = session.createCriteria(student.class).add(
Restrictions.eq("name", "stevens"));
Wie kann retreive die Lehrer von "Steven"?
So etwas wie
(select * from teacher(where teacher.id = student.teachersid(where student.name="stevens")))
,aber mit dem Hibernate Criteria Api.
Vielen Dank im Voraus!
InformationsquelleAutor oikonomopo | 2012-08-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hoffe, dies wird Ihnen helfen. Lassen Sie mich wissen, wenn Sie irgendwelche Fragen haben.
Sie müssen unter Eigenschaft in Teacher.java @OneToMany(targetEntity=Student.class cascade=CascadeType.ALL,mappedBy="Lehrer") @Cascade(value=org.hibernate.Anmerkungen.CascadeType.ALLE) private Collection<Student> Studenten = new ArrayList<Student>(); müssen Sie unter Immobilien in Student.java @ManyToOne @JoinColumn(name="colg_id") private College College; Sie müssen setter und Getter dieser Eigenschaften in beiden Klassen.
In der ersten Zeile ist es nicht an der session.createCriteria?
ja..es ist Sitzung.createCriteria
Wenn ich versuche zu kompilieren, es sagt: "Type mismatch: cannot convert from CascadeType zu CascadeType[]
InformationsquelleAutor Java P
Ihre Hibernate-entity-Klasse bedeutet nicht unbedingt die Beziehung zwischen den Tabellen korrekt.
Der Student sollte ein Unternehmen Aussehen etwas ähnlich
Sobald Sie verändert Ihre Entitäten korrekt, dann in den Ruhezustand automatisch Probleme, die eine Verknüpfung zwischen den Tabellen.
Fügen Sie die Beziehung entity-Annotationen entsprechend. Siehe link docs.jboss.org/hibernate/annotations/3.5/reference/en/...
InformationsquelleAutor Sajan Chandran
Ich denke, der einfachste Weg ist die Verwendung der Lehrer-Entität als Hauptsache und anwenden sqlRestriction filter diese Tabelle.
Ich denke, dass Sie nicht verwenden können, Kriterien und Einschränkungen direkt aus der Schüler-Klasse, weil Sie das, was Sie, was Sie abrufen sind die Lehrer Entitäten und es gibt keine Zuordnung in diese Richtung Lehrer -> student.
Ich denke, das wird für Sie arbeiten:
InformationsquelleAutor kothvandir