- @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. 
 -  
 
- @Inheritance
 -  
    
Определяет стратегию наследования для иерархии классов сущностей. Данная аннотация должна быть помещена на корневом классе иерархии.
Параметры:
-  
strategy- стратегия, по умолчаниюSINGLE_TABLE 
 -  
 
- @Listeners
 -  
    
Определяет список слушателей, предназначенных для реакции на события жизненного цикла экземпляров сущности на уровне Middleware.
Значением аннотации должна быть строка или массив строк с именами бинов слушателей - см. Entity Listeners.
Примеры:
@Listeners("sample_UserEntityListener")@Listeners({"sample_FooListener","sample_BarListener"}) 
- @MappedSuperclass
 -  
    
Определяет, что данный класс является предком некоторых сущностей, и его атрибуты должны быть использованы в составе сущностей-наследников. Такой класс не сопоставляется никакой отдельной таблице БД.
 
- @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|login,name") -  
 
- @PostConstruct
 -  
    
Данная аннотация может быть указана для метода класса. Такой метод будет вызван сразу после создания экземпляра сущности через Metadata.create(). Это удобно, если для инициализации экземпляра сущности требуется вызов каких-либо бинов. Пример см. в Инициализация полей сущности.
 
- @PublishEntityChangedEvents
 -  
    
Указывает, что когда данная сущность изменяется в базе данных, фреймворк должен посылать EntityChangedEvent.
 
- @SystemLevel
 -  
    
Указывает, что данная сущность является системной и не должна быть доступна для выбора пользователем в различных списках сущностей, например, как тип параметра универсального фильтра или тип динамического атрибута.
 
- @Table
 -  
    
Определяет таблицу базы данных для данной сущности.
Параметры:
-  
name- имя таблицы 
Пример:
@Table(name = "SALES_CUSTOMER") -  
 
- @TrackEditScreenHistory
 -  
    
Указывает, что для данной сущности будет запоминаться история открытия экранов редактирования (
{имя_сущности}.edit) с возможностью отображения в специальном экранеsec$ScreenHistory.browse, который можно подключить к главному меню с помощью следующего элемента web-menu.xml: 
<item id="sec$ScreenHistory.browse" insertAfter="settings"/>