Grails 2.3.4를 사용하고 있습니다. 특정 조건을 가진 도메인 개체를 검색하려고하지만 속성이 null 일 때 문제가 발생합니다. 다음은 그 예입니다.Grails - if와 else from null 속성을 가진 createCriteria
class Domain1 {
int locationId
Domain2 domain2
Domain3 domain3
...
static constraints = {
locationId(nullable:false, blank:false, unique:false)
domain2(nullable:true)
domain3(nullable:true)
...
}
}
class Domain2 {
int locationId
...
static constraints = {
locationId(nullable:false, blank:false, unique:false)
...
}
}
class Domain3 {
int locationId
...
static constraints = {
locationId(nullable:false, blank:false, unique:false)
...
}
}
쿼리 만 locationId은 도메인 1에서 유효한 경우, 하나의 도메인 1을 반환한다고 가정하고, null가 아닌 경우 도메인 2에 유효 locationId하고, null가 아닌 경우 DOMAIN3에 유효 locationId된다.
def getDomain1ById(Long sid) {
return Domain1.createCriteria().get {
idEq(sid)
'in' ("locationId", Util.getUserAccessLocationList())
// What I want to do is if(domain2 != null) check location
or {
isNull("domain2")
domain2 {
'in' ("locationId", Util.getUserAccessLocationList())
}
}
// What I want to do is if(domain3 != null) check location
or {
isNull("domain3")
domain3 {
'in' ("locationId", Util.getUserAccessLocationList())
}
}
}
}
무엇이 누락 되었습니까? domain2와 domain3이 null이 아니면 쿼리가 정상적으로 작동합니다.
당신은'isNotNull ("도메인 2")'과'isNotNull ("DOMAIN3")을 찾고 하여서는 아니된다'대신? – dmahapatro
또는 절 안에 있기 때문에 메커니즘이 첫 번째 true 문으로 종료되지 않습니까? –