В моем приложении для составления гиперлогов я хочу написать именованный запрос, который возвращает всех людей с двумя указанными увлечениями.
Модель для «Персона» следующая:
participant Person identified by id {
o String id
o String firstName
o String lastName
o String email
--> Hobby[] hobbies optional
}
Модель для "Хобби" следующая:
asset Hobby identified by id {
o String id
o String name
}
Именованный запрос имеет следующую структуру:
query selectPersonsByHobbies {
description: "Select all persons with the two specified hobbies."
statement:
SELECT org.comp.myapp.Person
WHERE //not sure what to put here//
}
Я не уверен, что ставить после оператора "ГДЕ", чтобы добиться того, чего я хочу.
Это правильно?:
query selectPersonsByHobbies {
description: "Select all persons with the two specified hobbies."
statement:
SELECT org.comp.myapp.Person
WHERE (hobbies CONTAINS ((name == _$hobby1) AND (name == _$hobby2)))
}
Или верно ли следующее:
query selectPersonsByHobbies {
description: "Select all persons with the two specified hobbies."
statement:
SELECT org.comp.myapp.Person
WHERE (hobbies CONTAINS (name == _$hobby1) AND CONTAINS (name == _$hobby2))
}
UPDATE:
Следуя ответу, предложенному Полом О'Махони, вот как я понимаю ситуацию:
Учитывая следующую модель для "Персона":
participant Person identified by id {
o String id
o String firstName
o String lastName
o String email
o Hobby[] hobbies optional
}
и следующая модель для хобби:
asset Hobby identified by id {
o String id
o String name
}
следующий запрос успешно вернет всех людей с двумя указанными хобби:
query selectPersonsByHobbies {
description: "Select all persons with the two specified hobbies."
statement:
SELECT org.comp.myapp.Person
WHERE ( hobbies CONTAINS [ _$hobby1, _$hobby2] )
}
.... значения параметров, отправленные с запросом (и для вставки для _ $ hobby1 и _ $ hobby2, соответственно), будут идентификаторами соответствующих хобби, верно?