我在排序具有空值的列表时遇到问题!
我需要的是在订购时,空值出现在列表的最后一个位置!因为现在看来Null在订购时位于我的列表顶部!
我无法使用NullPrecedence,因为hibernate版本是3.6.x
我的代码示例!
SomeClass.createCriteria().list {
eq('sth', sth)
if (sort == 'someValue') {
createAlias("nestedClass1", "nc1", CriteriaSpecification.LEFT_JOIN)
createAlias("nc1.nestedClass2", "nc2", CriteriaSpecification.LEFT_JOIN)
createAlias("nc2.nestedClass3", "nc3", CriteriaSpecification.LEFT_JOIN)
order("nc3.name", sortOrder)
}
}
答案 0 :(得分:2)
您可以在域类中添加新字段,并使用映射到公式来检查它是否为空,然后按此额外字段排序:
class SomeClass {
String name
boolean nameNotNull
static mapping = {
nameNotNull formula: 'name is not null'
}
}
SomeClass.createCriteria().list() {
order ('nameNotNull', 'desc')
order ('name', 'asc')
}