Mapping persistent classes - Querying JPA with Querydsl - Querying a database with Querydsl

6 belangrijke vragen over Mapping persistent classes - Querying JPA with Querydsl - Querying a database with Querydsl

Welke objecten heb je nodig om met QueryDSL te werken ?

Een JPAQueryFactory die een ENtityManager als argument neemt, de JPAQueryFactory zal JPAQueries creeren

Hoe groepeer je data met QueryDSL?

Om gegevens te groeperen, zullen we de "groupBy" methode gebruiken, die de expressie voor het groeperen ontvangt. Een dergelijke query zal een lijst van Tuple-objecten retourneren. Een com.querydsl.core.Tuple object is een sleutel-/waardepaar dat de sleutel om op te groeperen en de
bijbehorende waarde bevat

List<Tuple> userBidsGroupByAmount =
queryFactory.select(QBid.bid.amount,
QBid.bid.id.count().as(count))
D
.from(QBid.bid)
.groupBy(QBid.bid.amount)
.orderBy(count.desc())
E
.fetch();

Hoe werk je met subqueries in QueryDSL ?


Om met subqueries te werken, zullen we een subquery maken met behulp van de statische fabrieksmethoden van JPAExpressions (zoals select), en we zullen de queryparameters definiëren met behulp van methoden zoals from en where. We zullen de subquery doorgeven aan de where-methode van de hoofdquery.

List<User> users = queryFactory.selectFrom(QUser.user).where(QUser.user.id.in(
JPAExpressions.select(QBid.bid.user.id)
.from(QBid.bid)
.where(QBid.bid.amount.eq(
new BigDecimal("120.00")))))
.fetch();
  • Hogere cijfers + sneller leren
  • Niets twee keer studeren
  • 100% zeker alles onthouden
Ontdek Study Smart

Hoe join je in QueryDSL



Om met joins te werken, zullen we de methoden innerJoin, leftJoin en outerJoin gebruiken om de join te definiëren, en we zullen de on-methode gebruiken om de voorwaarde (een Predicate) voor de join te verklaren.
List<User> users = queryFactory.selectFrom(QUser.user).innerJoin(QUser.user.bids, QBid.bid)
.on(QBid.bid.amount.eq(new BigDecimal("120.00")))
.fetch();

Hoe verwijder je een entiteit met QueryDSL?


Om entiteiten te verwijderen, zullen we de delete-methode van de JPAQueryFactory-klasse gebruiken, de where-methode om de Predicate te definiëren die de te verwijderen entiteiten zal filteren (optioneel) en de execute-methode om de verwijdering daadwerkelijk uit te voeren.
queryFactory.delete(QUser.user)
.where(QUser.user.username.eq("burk"))
.execute();

Hoe voeg je entiteiten toe met QueryDSL?

Niet je gebruikt een EntityManager of Session of repository

De vragen op deze pagina komen uit de samenvatting van het volgende studiemateriaal:

  • Een unieke studie- en oefentool
  • Nooit meer iets twee keer studeren
  • Haal de cijfers waar je op hoopt
  • 100% zeker alles onthouden
Onthoud sneller, leer beter. Wetenschappelijk bewezen.
Trustpilot-logo