Аннотация @ColumnDefault надо полем класса предметной области заставит Hibernate создать для этого поля колонку в БД со значением по умолчанию, которое передаёт параметром в эту аннотацию. Кроме того, с помощью параметра GenerationTime.INSERT аннотации @Generated можно определить, возможно ли будет переопределять значение по умолчанию при вставке или оно всегда будет одним и тем же, когда создаётся новая запись в таблице.
Читать далееАрхив рубрики: Запросы
Конвертация значений между базой данных и объектами предметной области в Hibernate с помощью аннотации @ColumnTransformer
Данные, хранимые в колонках БД бывает необходимо как-то преобразовывать при отображении в объекты классов предметной области. И, наоборот, при сохранении данных из объектов в БД также необходимо делать обратное преобразование. Например, температура в объекта может храниться в градусах Цельсия, а в БД в фаренгейтах. Выполнить такое преобразование можно с помощью аннотации @ColumnTransformer.
Читать далееСоздание производных полей в классах предметной области с помощью аннотации @Formula в Hibernate
Зачастую выборка из таблицы должна содержать не только колонки с данными, но и колонки с вычисляемыми (обычно с помощью функций и подзапросов) значениями. Это могут быть, например, средние, минимальные и максимальные величины. Если для таких случаев по тем или иным причинам в БД не созданы представления (view), то мы можем указать Hibernate’у усложнить запрос и выбрать дополнительные данные в выборку с помощью аннотации @Formula.
Читать далееИзменение способа доступа к отдельному полю класса предметной области с поля на геттер и обратно в Hibernate с помощью аннотации @Access
По умолчанию при выборе способа доступа к полю Hibernate ориентируется на положение обязательной аннотации @Id. Если @Id стоит над полем, то доступ (установка и чтение значений) ко всем полям будет осуществляться через механизмы рефлексии непосредственно на поле. Если аннотация над геттером, то значения полей будут устанавливаться и считываться Hibernate’ом через геттеры и сеттеры (при этом аннотация над сеттером никогда не ставится).
Изменить способ доступа к отдельному полю можно с помощью аннотации @Access.
Читать далееСоздание суррогатов представлений (view) базы данных на уровне приложения с помощью Hibernate
Если по тем или иным причинам нет возможности создать полноценное представление прямо в БД, то Hibernate позволяет создать суррогат такого представления с помощью аннотации @org.hibernate.annotations.Subselect прямо в приложении.
Читать далееИспользование аннотации @Entity для решения конфликтов имён в JPA запросах при наличии классов предметной области с одинаковыми именами
Может так сложиться, что в проекте будет некоторое количество классов предметной области с одинаковыми именами, но расположенные в разных пакетах. Например, два класса Client. Им могут быть сопоставлены разные таблицы, но в JPA запросах вида «select c from Client c» будет иметь место неоднозначность. Чтобы эту неоднозначность снять, можно воспользоваться параметром name аннотации @Entity.
Читать далееHibernate. Использование именованных запросов (@NamedQueries) на уровне пакета
Создадим именованный запрос в файле package-info.java, который в дальнейшем будет вызываться по строке с именем. Именованные запросы, вызываемые через методы репозитория, рассмотрены в другой статье.
Читать далееHibernate. Использование именованных запросов (@NamedQueries) на уровне класса
Создадим именованный запрос над классом сущности, который в дальнейшем будет вызываться через специальный метод в репозитории. Именованные запросы, вызываемые через методы репозитерия, рассмотрены в другой статье.
Читать далее