이미 많이 검색했지만 해결 방법을 찾지 못했습니다. 나는 너의 도움이 정말로 필요하다고 생각한다. 내 문제는 "특별한"목표로 필터링하는 것입니다. 우리가 많은 기술을 가지고있는 소수의 사람을 가지고 있다고 가정 해 봅시다. 나는이 사람을 이름과 일치하는 기술로 걸러 낼 수있다. 그러나 나는 단 한 번의 폭발 기술과 다른 기술을 가진 사람들을 입수해야합니다. 즉 매우 빠르게 실행할 수 있지만 이보다 더 좋은 것은 아닙니다. 그러나 사람이 기술의 많은 항목을 수영했을 수도 있습니다. 즉 세 가지 기술을 가진 피터 : [수영, 수영, 수영]도 결과에 있어야합니다. 예를 들면 다음과 같습니다. 나는 정말로 약간의 팁을 듣기를 고대하고있다. 고맙습니다.Grails 필터 기준, 조건 쿼리, 명시 적 항목 만, 특별 시나리오
class Person {
String name;
static hasMany = [skills: Skill]
}
class Skill {
Double skillLevel;
SkillType skillName;
}
class ControllerClass {
def filterMethod() {
def personCriteria = Person.createCriteria()
results = personCriteria.list(params) {
and {
eq("name", "Peter")
//I can do this to get Person, who have the skill to swim
skills {
eq("skillName", "swim")
}
//Problem: this Person might have other skills, too. i.e. "run fast", "jump high", "Math"
//My Goal is: I want only these persons, who only have the skill "swim" and no other skill, but the item swim can appear more than once
}
}
}
}
필자의 시나리오에서는 모든 종류의 기술을 알고 있으므로 제한적입니다. 이렇게하면 더 쉽게 만들 수 있지 않을까요? 수영, 달리기, 노래하기 등 세 가지 기술이 있다고 가정 해 봅시다. 그러나 그들은 한 번 이상 나타날 수 있습니다. 무엇 당신 whant을해야 sizeEq
- 왜 이런 일이? 당신은 옳은 길이다
and {
and {
sizeGe("skills", 1)
skills{
eq("skillName", "swim")
}
}
and {
sizeEq("skills", 0)
skills {
eq("skillName", "run")
}
}
and {
sizeEq("subgruppen", 0)
skills {
eq("skillName", "sing")
}
}
}
이것은 정말 좋은 시작입니다. 감사합니다. 그러나 많은 수영 선수가있는 인물이 결과에 있어야한다고 언급하는 것을 잊었습니다. 이 예제에서는 아무 의미가 없지만 내 프로젝트에서는 그렇습니다. 즉 수영, 수영, 수영을 한 사람도 결과에 있어야합니다. – waywayway
나는 sizeEq 함수를 잘못된 방법으로 사용했습니다. 귀하의 조언을 주셔서 감사합니다, 그래서 위의 내 질문을 편집했습니다. – waywayway