- @PrimaryKeyJoinColumn
-
Используется в случае стратегии наследования
JOINED
для указания колонки внешнего ключа данной сущности, ссылающегося на первичный ключ сущности-предка.Параметры:
-
name
- имя колонки внешнего ключа данной сущности -
referencedColumnName
- имя колонки первичного ключа сущности предка
Пример:
@PrimaryKeyJoinColumn(name = "CARD_ID", referencedColumnName = "ID")
-
3.2.1.2.1. Аннотации класса
- @Embeddable
-
Определяет встраиваемую сущность, экземпляры которой хранятся вместе с владеющей сущностью в той же таблице.
Для задания имени сущности требуется применение аннотации @MetaClass.
- @EnableRestore
-
Указывает, что экземпляры данной сущности доступны для восстановления после мягкого удаления в специальном экране
core$Entity.restore
, доступном через пункт Administration > Data Recovery главного меню.
- @Entity
-
Объявляет класс сущностью модели данных.
Параметры:
-
name
- имя сущности, обязательно должно начинаться с префикса, отделенного знаком_
. Желательно использовать в качестве префикса короткое имя проекта для формирования отдельного пространства имен.
Пример:
@Entity(name = "sales_Customer")
-
- @Extends
-
Указывает, что данная сущность является расширением и должна повсеместно использоваться вместо базовой. См. Расширение функциональности.
- @DiscriminatorColumn
-
Используется для определения колонки БД, отвечающей за различение типов сущностей в случае стратегий наследования
SINGLE_TABLE
иJOINED
.Параметры:
-
name
- имя колонки-дискриминатора -
discriminatorType
- тип данных колонки-дискриминатора
Пример:
@DiscriminatorColumn(name = "TYPE", discriminatorType = DiscriminatorType.INTEGER)
-
- @DiscriminatorValue
-
Определяет значение колонки-дискриминатора для данной сущности. Эта аннотация должна быть помещена на конкретном классе сущности.
Пример:
@DiscriminatorValue("0")
- @IdSequence
-
Явно задает имя последовательности базы данных, используемой для генерации идентификаторов сущности, если она является подклассом
BaseLongIdEntity
илиBaseIntegerIdEntity
. Если сущность не аннотирована, то фреймворк создает последовательность с автоматически сгенерированным именем.Параметры:
-
name
– имя последовательности. -
cached
- необязательный параметр, определяющий что последовательность должена инкрементироваться через cuba.numberIdCacheSize для кэширования промежуточных значений в памяти. По умолчанию false.
По умолчанию последовательности создаются в основном хранилище. Если же свойство приложения cuba.useEntityDataStoreForIdSequence установлено в
true
, последовательности будут создаваться в хранилище, к которому принадлежит данная сущность. -
- @Inheritance
-
Определяет стратегию наследования для иерархии классов сущностей. Данная аннотация должна быть помещена на корневом классе иерархии.
Параметры:
-
strategy
- стратегия, по умолчаниюSINGLE_TABLE
-
- @Listeners
-
Определяет список слушателей, предназначенных для реакции на события жизненного цикла экземпляров сущности на уровне Middleware.
Значением аннотации должна быть строка или массив строк с именами бинов слушателей - см. Entity Listeners.
Примеры:
@Listeners("sample_UserEntityListener")
@Listeners({"sample_FooListener","sample_BarListener"})
- @MappedSuperclass
-
Определяет, что данный класс является предком некоторых сущностей, и его атрибуты должны быть использованы в составе сущностей-наследников. Такой класс не сопоставляется никакой отдельной таблице БД.
Руководство Data Modelling: Entity Inheritance демонстрирует механизм наследования сущностей.
- @MetaClass
-
Используется для объявления неперсистентной или встраиваемой сущности (т.е. когда аннотация
@javax.persistence.Entity
не применима)Параметры:
-
name
- имя сущности, обязательно должно начинаться с префикса, отделенного знаком_
. Желательно использовать в качестве префикса короткое имя проекта для формирования отдельного пространства имен.
Пример:
@MetaClass(name = "sales_Customer")
-
- @NamePattern
-
Определяет способ получения имени экземпляра, т.е. строки, которая представляет экземпляр сущности. Имя экземпляра можно описать как метод
toString()
прикладного уровня. Он повсеместно используется в UI при отображении экземпляров сущностей в отдельных полях подобныхTextField
илиLookupField
. Кроме того, имя экземпляра можно получить программно методомMetadataTools.getInstanceName()
.Значением аннотации должна быть строка вида
{0}|{1}
, где:-
{0}
- строка форматирования, которая может быть одной из следующих двух типов:-
Строка с символами
%s
для подстановки форматированных значений атрибутов. Значения форматируются в строки в соответствии с datatypes атрибутов. -
Имя метода данного объекта с префиксом
#
. Метод должен возвращатьString
и не иметь параметров.
-
-
{1}
- разделенный запятыми список имен атрибутов сущности, соответствующий формату{0}
. В случае использования в{0}
метода список полей все равно необходим, так как по нему формируется представление_minimal
.
Примеры:
@NamePattern("%s|name")
@NamePattern("%s - %s|name,date")
@NamePattern("#getCaption|amount,customer") ... public String getCaption(){ String prefix = ""; if (amount > 5000) { prefix = "Grade 1 "; } else { prefix = "Grade 2 "; } return prefix + customer.name; }
-
- @PostConstruct
-
Данная аннотация может быть указана для метода класса. Такой метод будет вызван сразу после создания экземпляра сущности методом Metadata.create() или аналогичными методами
DataManager.create()
иDataContext.create()
.В руководстве Initial Entity Values приводится пример определения начального значения непосредственно в классе сущности с помощью аннотации
@PostConstruct
.Аннотированный метод может принимать в качестве параметров Spring-бины, доступные в модуле
global
. Например:@PostConstruct public void postConstruct(Metadata metadata, SomeBean someBean) { // ... }
- @PublishEntityChangedEvents
-
Указывает, что когда данная сущность изменяется в базе данных, фреймворк должен посылать EntityChangedEvent.
- @SystemLevel
-
Указывает, что данная сущность является системной и не должна быть доступна для выбора пользователем в различных списках сущностей, например, как тип параметра универсального фильтра или тип динамического атрибута.
- @Table
-
Определяет таблицу базы данных для данной сущности.
Параметры:
-
name
- имя таблицы
Пример:
@Table(name = "SALES_CUSTOMER")
-
- @TrackEditScreenHistory
-
Указывает, что для данной сущности будет запоминаться история открытия экранов редактирования (
{имя_сущности}.edit
) с возможностью отображения в специальном экранеsec$ScreenHistory.browse
, который можно подключить к главному меню с помощью следующего элемента web-menu.xml:
<item id="sec$ScreenHistory.browse" insertAfter="settings"/>