У меня есть таблица с 11 столбцами, но я должен получить только 2 из них в моем приложении, я использую комбинацию ПРУЖИНЫ/БЫТЬ В СПЯЩЕМ РЕЖИМЕ/ДАО. На данный момент у меня есть доменный класс, который включает все 11 полей и отображающийся файл, который отображает все 11 столбцов в таблице. Как делают я использую, получают всего 2 из них не все?
Либо:
Использовать прогнозы - Pro: добавлять нечего - Con: не типизировано (результат - Список
строк, где каждая строка является Object [])
:
выберите f.foo, f.bar из FatEntity f
Используйте выражение конструктора в предложении SELECT (указанный класс не обязательно должен быть сущностью или отображаться в базе данных) - Pro: безопасное решение - Con: больше классов, если вы повторно не используете FatEntity
в качестве держателя, и в этом случае многие поля будут null
:
выберите новый com.acme.FatEntityDetails (f .id, f.foo, f.bar) из FatEntity f
Обратите внимание, что если имя класса сущности указано в предложении SELECT NEW
, результирующие экземпляры сущности находятся в новое состояние (без постоянного идентификатора).
Используйте другую сущность, отображенную в той же таблице, только с обязательными полями - Pro: это реальная сущность, которую вы можете изменять и обновлять - Con: Больше классов.
от LightEntity
Основные различия между №2 и №3 заключаются в следующем:
Попробуйте:
SELECT myEntity.one, myEntity.two FROM MyEntity myEntity
Вы даже можете сделать:
SELECT new MyEntityDescription(myEntity.one, myEntity.two) FROM MyEntity myEntity
, чтобы получить список описаний сущностей.
Если вам никогда не нужно больше, чем эти 2 столбца таблицы, вы можете изменить отображение гибернации, чтобы сопоставить только эти 2 столбца с классом сущности. Сопоставляйте только те столбцы таблицы, к которым вы хотите получить доступ в своем приложении. Имейте в виду, что ограничения базы данных на «игнорируемые» столбцы могут быть нарушены, например, ненулевые ограничения, внешние ключи или уникальные ограничения.