QueryDSL에서 특정 조건에서 group by가 필요한 경우 작업한 내용을 공유한다.
ex) SELECT a, b, count(id) FROM abc group by a, b;
@Configuration
public class QuerydslConfig {
@PersistenceContext
private EntityManager entityManager;
@Bean
public JPAQueryFactory jpaQueryFactory() {
return new JPAQueryFactory(entityManager);
}
}
public class QueryDslTest {
private final JPAQueryFactory queryFactory;
public QueryDslTest(JPAQueryFactory queryFactory) {
this.queryFactory = queryFactory;
}
queryFactory
.select(
Projections.fields(abcDto.class,
abc.a,
abc.b,
abc.id.count().as("count"))
)
.from(abc)
.groupBy(abc.a, abc.b)
.orderBy(OrderByNull.DEFAULT)
.fetch()
public class OrderByNull extends OrderSpecifier {
public static final OrderByNull DEFAULT = new OrderByNull();
private OrderByNull() {
super(Order.ASC, NullExpression.DEFAULT, NullHandling.Default);
}
}