Рассмотрите следующую настройку.Hibernate поисковый запрос, ограничение по дочерним классам?
Space.java
class Space {
Id id;
ParkingCampus campus;
}
class ParkingCampus {
Id id;
String country;
}
Это не точная структура моего проекта, но достаточно близко для того, что я пытаюсь понять.
Как я могу выполнить запрос в моем объекте «Пробел», который возвращает только экземпляры, где дочерний класс «ParkingCampus» имеет строку «Страна», установленную на определенное значение, например: «Великобритания».
Я думал, что-то вроде:
sessionFactory.getCurrentSession()
.createCriteria(String.class)
.add(Restrictions.eq("country", "UK"))
.list();
Но я не уверен, что если бы собрать правильно. Таким образом, Hibernate по умолчанию выполняет «глубокий» поиск в попытке сопоставить результаты с моими критериями ограничения или мне нужно сделать что-то еще, чтобы указать, что запрос работает таким образом?
Любая помощь была бы принята с благодарностью!
привет, спасибо за ваш ответ. Учитывая сущности в таблице, я согласен с вами в том, что пространство должно иметь поле идентификатора кампуса. Однако, и исправьте меня, если я ошибаюсь, является ли пункт Hibernate не тем, что он должен помочь отобразить эти отношения для меня? Так сказать, что после получения пространства я должен также определить соответствующий кампус. Вместо того, чтобы выполнять поиск по первому пространству, а затем идентификатор кампуса, чтобы получить результат, который я хочу? – Adam
Первоначально, да, но вы хотите использовать сопоставление «много-к-одному»: http://www.tutorialspoint.com/hibernate/hibernate_many_to_one_mapping.htm в основном, то, что у вас есть, подходит как «грубый эскиз», но вы хотите для реализации отношений, чтобы, например, Кампус приносил с собой ленивую коллекцию пространств, с которой вы можете работать. – Compass