У меня есть модель данных, которая выглядит следующим образом (упрощенный пример):
public class Address { private List<AddressLine> addressLines; }
public class AddressLine { private String value; private String type; }
Я пытаюсь использовать Criteria API для поиска адресов в базе данных, которая содержит определенные комбинации AddressLines.Например, чтобы извлечь все адреса, содержащие адресные строки {(type = "CITY", value = "London"), (type = "COUNTRY", value = "GB")}.Я не смог найти ни одного примера такого запроса.
Насколько мне удалось получить, это запросить адрес на основе одной AddressLine.
session.createCriteria(Address.class)
.createCriteria("addressLines")
.add(Restrictions.and(Restrictions.eq("type", type), Restrictions.eq("value", value))).list()
Если я добавлю ограничение для второй адресной строки, SQL, который генерирует hibernate, в основном запрашивает SELECT x WHERE xy = 'a' AND xy = 'b', поэтому никогда не вернет никаких результатов.
Я обнаружил, что подобные вопросы задавались ранее, но ни один из них не получил или проголосовал за ответ.