0
Можно ли написать эквивалент Querydsl этого SQL?Querydsl SELECT что-то как something_else
SELECT coalesce(m.MATERIAL_GROUP, sc.MATERIAL_ID) AS GROUP_ID FROM STOCK_CARD sc JOIN MATERIAL m ON (sc.MATERIAL_ID = m.ID) GROUP BY GROUP_ID;
В Querydsl я попытался (stockCard статически импортирован):
public List<Long> justAnExample() {
NumberPath<Long> group_id = Expressions.numberPath(Long.class, "group_id");
return from(stockCard)
.groupBy(group_id)
.list(stockCard.material.materialGroup.id.coalesce(stockCard.material.id).as(group_id));
}
Но мне кажется, что Querydsl игнорирует "как()", потому что генерируется SQL является:
select coalesce(material1_.MATERIAL_GROUP, stockcard0_.MATERIAL_ID) as col_0_0_ from STOCK_CARD stockcard0_, MATERIAL material1_ where stockcard0_.MATERIAL_ID=material1_.id group by group_id
Обратите внимание, что это очень упрощенный запрос, чтобы попробовать, возможно ли это. Спасибо!
вы используете JPA случайно? Это не похоже на Querydsl output, но скорее похоже на Hibernate. –
Я использую данные Hibernate и Spring, мой класс репозитория расширяет QueryDslRepositorySupport. – kamelot