Ich benutze Spring-Daten-Jpa und Querydsl (3.2.3)
Ich habe ein Szenario, in dem ich Satz von Prädikaten basierend auf Benutzer filer/Eingabe erstellen. All dies kommt zu BooleanExpression
.QueryDsl - Unterabfrage in Sammlungsausdruck
Mein vereinfachtes Modell sieht wie folgt:
@Entity
public class Invoice {
@ManyToOne
private Supplier supplier;
}
@Entity
public class Supplier {
private String number;
}
@Entity
public class Company {
private String number;
private boolean active
}
Nun, was mit ich bin zu kämpfen ist diese Abfrage:
SELECT * FROM Invoice WHERE invoice.supplier.number in (SELECT number from Company where active=true)
Also im Grunde ich in CollectionExpression
wie Format zu Unterabfrage muß, die holen werden Alle Firmen nummerieren und setzen dies in in() Ausdruck.
Meine Feder-Daten-Repositories implementiert CustomQueryDslJpaRepository
, die wiederum JpaRepository
und QueryDslPredicateExecutor
erweitert.
Ich hoffe, die Antwort ist einfach, aber ich bin ziemlich neu zu Querydsl und fand die Lösungen bisher nicht.
Scheint so, als wäre 'JPASubQuery' nicht mehr in QueryDSL verfügbar. 4. Konvertiert diese Antwort in:' BooleanExpression exp = invoice.supplier.number.in (JPAExpressions.selectFrom (Firma) .where (company.active.isTrue()) .select (company.nu mber)); ' –
@OliverHernandez Wie erreicht man dasselbe für die Beziehung Many to Mant? https://stackoverflow.com/questions/44830387/how-to-create-predicate-booleanexpression-for-many-to-many-relations-in-jpa –