Ich denke, das ist einfach, aber ich kann es nicht herausfinden.Wie konstruiere ich eine inverse Join für eine unidirektionale Beziehung?
Wenn ich Entitäten Foo und Bar:
@Entity
class Foo{
@OneToMany
List<Bar> bars;
}
@Entity
class Bar{
@Column
int data;
}
und wenn ich einen Join (javax.persistence.criteria.Join<Foo, Bar>
) Objekt erstellt werden soll, kann ich es wie folgt tun:
Root<Foo> root = ...;
Join<Foo,Bar> join = root.join(Foo_.bars);
Aber wie kann ich machen eine inverse
Join<Bar,Foo> inverseJoin = barRoot.join....()...?
kommen, da ich in der Klasse Bar nicht ein Java-Feld haben, die es Punkte ist Foo paren t, es ist eine unidirektionale Beziehung?
Nun, die offensichtliche Antwort ist: es ist nicht eine unidirektionale Beziehung, wenn Sie eine inverse beitreten müssen. Haben Sie mit einer bidirektionalen Beziehung ausgecheckt (Hinzufügen von '@ ManyToOne' zu' Bar')? – mabi
Ich habe das berücksichtigt, aber ich möchte das möglichst vermeiden. –
Sie müssen dann wahrscheinlich auf eine rohe SQL-Abfrage zurückgreifen. Ich weiß nicht, wie ich tun soll, was du willst, und IMHO sollte es keinen geben. – mabi