Ich versuche eine Entität A
auszuwählen, die eine B
enthält, die eine Liste C
enthält, wobei der Wert C.d
mit einem Parameter übereinstimmen muss.JPQL zur Auswahl der Entität basierend auf dem Enkelattribut
Meine Entitäten wie folgt aussehen:
@Entity
class A {
@GeneratedValue
@Id
private Long id;
@Column(name="B")
@OneToOne(cascade=CascadeType.ALL)
@MapsId
private B b1;
}
@Entity
class B {
@GeneratedValue
@Id
private Long id;
@OneToMany(mappedBy="b2", cascade=CascadeType.ALL)
private List<C> cs;
}
@Entity
class C {
@GeneratedValue
@Id
private Long id;
@ManyToOne
@JoinColumn(name="B")
private B b2;
private String d;
}
Meine naive Ansatz meiner Einheit wie folgt aussehen zur Auswahl:
SELECT entity FROM A entity WHERE entity.b1.cs.d = :d
Wie sollte die Abfrage strukturiert sein?
Könnten Sie genauer erklären, wie das funktioniert? Es scheint, eine Liste eher als A zurückzugeben? – span
ja das wird eine Liste von Objekten vom Typ A zurückgeben, wenn Sie sicher sind, dass Ihr Ergebnis nur ein Objekt sein wird, können Sie getSingleResult() anstelle von getResultList() verwenden –