Ich habe 2 Tabellen: Eltern und Kind und OneToMany Beziehung zwischen Eltern und KindHibernate holen Eltern und alle Kinder, wenn alle Kinder Kriterien erfüllen
@Entity
@Table(name="PARENT")
public class Parent {
int parentID;
String marritalStatus;
List<Child> children;
//getters and setters
@OneToMany(mappedBy = "parent", cascade=CascadeType.ALL, orphanRemoval=true, fetch = FetchType.EAGER)
public List<Child> getChildren() {
return children;
}
}
@Entity
@Table(name="CHILD")
public class Child{
private Parent parent; //FK
private int age;
private int childID;
@ManyToOne
@JoinColumn(name = "PARENT_ID", referencedColumnName = "PARENT_ID", nullable=false)
public Parent getParent() {
return parent;
}
public void setParent(Parent parent) {
this.parent = parent;
}
}
Jetzt möchte ich mit allen Kindern, deren einer der Eltern holen Kinder sind 10 oder mehr Jahre alt und Eltern sind verheiratet. Mit anderen Worten, Nehmen wir an, P1 hat 2 Kinder, c1 Alter = 11 und c2 = 8 und p1.marritalStatus ist verheiratet.
Also meine Abfrage sollte P1 mit C1 und C2 holen.
Im Moment wird nur P1 mit C1 abgerufen. Nein c2. Und p1.getChildren() gibt nur c1.
Mein HQL wie folgt aussieht:
erste Abfrage, die ich ausführen: Eltern-ID-Liste
parentIDList = select p.parentID von Eltern erhalten, wie p LEFT JOIN p.children holen als c, wo c.age> 10 und p.marritalStatus = ‚verheiratet‘“
ich richtig Eltern-ID-Liste Pässe, die Eltern-ID erhalten (P1 in diesem Fall) Liste in der 2. Abfrage
2. Abfrage auf Elterntabelle (keine zu untergeordneter Tabelle verbindet) "von Parent als p wo p.parentID IN (parentIDList)"
Da FetchType EAGER ist, dachte ich, Hibernate wird alle Kinder holen, wenn ich Eltern abholen, aber nicht so aussehen.
Ich versuchte - Join mit Child-Tabelle für die zweite Abfrage, aber es gibt kein wünschenswertes Ergebnis.
Meine erste Abfrage funktioniert gut und ich bekomme korrekte Elternliste, mein Problem wird nicht alle Kinder bekommen, wenn ich 2. Abfrage ausführen. Wie löst man das?
Ich kann nicht - von Kindern bekommen. Ich kann nur Eltern bekommen und es sind nur Kinder von Eltern. – DaenKhaleesi
Warum ist das? Sie haben es auf den Kindern als Felder/Beziehungen definiert. – javydreamercsw