Grails createCriteria mysql IF语句

Grails createCriteria mysql IF语句,mysql,grails,if-statement,case,Mysql,Grails,If Statement,Case,我是Grails的新手,我有个大问题。 我有这个域名: class Product{ String name Integer priority Double quantity } 我想按优先级(即为0或1)-desc对产品进行排序,然后按数量进行排序。在mysql中,我是这样做的: select name, IF(quantity>=1,1,0) as q from product where ... order by priority desc, q desc, id d

我是Grails的新手,我有个大问题。 我有这个域名:

class Product{

  String name
  Integer priority
  Double quantity
}
我想按优先级(即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中,我不知道如何为此创建标准


提前谢谢

试着在下面做点什么:

  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=低

请做必要的更改

Product.createCriteria().list(){
    projection{   // 1. because you only want to getname list.
       property("name")
    }
    ge("quantity", 1) // 2. greater than or equal 1

   order("priority", "desc" ) // by default "asc"
   order("quantity", "desc" )
   order("id", "desc" )
};
  • 使用“投影”换行时,仅返回返回结果中的给定属性

  • 当一个属性大于或等于某个特定属性时

     ge("balance", 1000)
    
  • “desc”或“asc”分别表示下降和上升。默认情况下,结果按升序排序


  • 嗨,蒂兹。谢谢你的快速回复,但我显然没有解释我需要什么。我想要一个Grails标准,它将执行与上面的mysql语句相同的操作。对不起,我的英语不好。嗨,splix。Tnx编辑我的文章。我很匆忙。。。很抱歉按任意表达式排序,或直接使用SQL。看起来连HQL都做不到:
    Product.executeQuery('from Product p order by(id>100)')
    对我来说失败,出现HQL语法错误。已添加。谢谢:)
     ge("balance", 1000)