2016-01-09 4 views
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 

Обратите внимание, что это очень упрощенный запрос, чтобы попробовать, возможно ли это. Спасибо!

+0

вы используете JPA случайно? Это не похоже на Querydsl output, но скорее похоже на Hibernate. –

+0

Я использую данные Hibernate и Spring, мой класс репозитория расширяет QueryDslRepositorySupport. – kamelot

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^