Grails createCriteria mysql IF заявление - PullRequest
0 голосов
/ 17 февраля 2012

Я новичок в Grails, и у меня большая проблема.У меня есть этот домен:

class Product{

  String name
  Integer priority
  Double quantity
}

Я хочу отсортировать товары по приоритету (который IS 0 или 1) - desc, а затем отсортировать по количеству.В mysql я делаю это так:

select name, IF(quantity>=1,1,0) as q from product
where ...
order by priority desc, q desc, id desc

В mysql есть оператор alse CASE, но в Grails я не представляю, как создать критерии для этого.

Спасибо зазаранее!

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

Нужно создать пользовательский класс Order (создание sql) для сортировки по произвольному выражению или просто использовать SQL.

Похоже, что даже HQL не может этого сделать: Product.executeQuery('from Product p order by (id > 100)') завершается с ошибкой синтаксиса HQL.

0 голосов
/ 17 февраля 2012

Попробуйте что-то сделать ниже:

  select name,IF(quantity>=1,1,0) as q
  from product 
  where ... 
  order by IF(priority=1,0,1), q desc, id desc

Учитывая приоритет 1 = высокий 0 = низкий

Пожалуйста, внесите необходимые изменения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...