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 ?
Hoe groepeer je data met QueryDSL?
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
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?
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