Вкладка Entity позволяет задавать свойства сущности и управлять ее атрибутами.
- Class Name - имя класса новой сущности
- Package Name - имя Java-пакета
- Name - имя сущности в формате
prefix$Name
, где prefix
- имя пространства имен проекта, а Name
- имя класса сущности. Это имя сущности используется в метаданных и в JPQL-запросах.
- Table - имя соответствующей таблицы БД в формате
PREFIX_NAME
, где PREFIX
- имя пространства имен проекта.
Имена сущности и таблицы в базе данных генерируются автоматически, когда вы указываете имя класса, однако могут быть изменены.
- Флаг Generate DDL позволяет отключить автоматическую генерацию скриптов создания и обновления БД для данной таблицы.
- В поле Parent class указывается либо один из бозовых классов сущностей, либо другая сущность. В настоящее время рекомендуется использовать два базовых класса сущностей:
- StandardEntity - базовый класс персистентных сущностей, который реализует интерфейсы версионности, мягкого удаления и истории изменений
- BaseUuidEntity - базовый класс персистентных сущностей, который декларирует часто используемые методы обработки информации создании экземпляров сущности. Когда вы выбираете этот тип, становятся доступными флажки Updatable, Soft Delete и Versioned, которые позволяют выбрать интерфейсы для реализации
Если сущность наследуется от другой сущности, и для родительского класса определена стратегия наследования JOINED
, становятся доступными слудующие поля:
- Discriminator - данное значение будет использовано в колонке-дискриминаторе родительской таблицы. Оно должно быть уникальным для данной иерархии.
- Primary key join column - колонка данной таблицы будет использована в качестве первичного ключа и внешнего ключа, ссылающегося на родительскую таблицу.
- Referenced primary key column - колонка, являющаяся первичным ключом родительской таблицы.
- Inheritance strategy - тип наследования, используемый подклассами текущей сущности. По умолчанию -
SINGLE_TABLE
. Это значение следует изменять только если вы хотите реализовать иерархию и на уровне классов, и на уровне базы данных. В остальных случаях стоит использовать суперклассы, которые позволяют группировать общие атрибуты в базовых классах, но при этом хранить их в отдельных таблицах конкретных классов.
Следующие поля становятся доступными, если вы выбираете стратегию наследования SINGLE_TABLE
или JOINED
:
- Discriminator column name - колонка, использующаяся для различения записей различных подтипов. Для наследуемых сущностей необходимо определить конкретное значение дискриминатора в их полях Discriminator.
- Discriminator type - тип колонки-дискриминатора.
Таблица Attributes отображает атрибуты сущности. Для того чтобы добавить новый атрибут, нажмите на кнопку New и задайте следующие свойства:
- Name - имя нового атрибута. Используйте lowerCamelCase, н-р
invoiceNumber
. Необходимо также указать локализованное имя атрибута, которое будет по умолчанию использоваться в UI. Для этого нажмите на кнопку рядом с полем и укажите имя атрибута на доступных языках.
- Attribute type - тип атрибута. Платформа поддерживает следующие типы:
- DATATYPE - атрибут одного из базовых типов данных, поддерживаемых интерфейсом Datatype. Тип данных можно выбрать в поле Type, которое появится снизу. Для атрибутов типа
String
необходимо указать максимальную длину строки в поле Length, иначе в БД будет создана соответствующая колонка неограниченного типа, н-р, LONGVARCHAR
. Для атрибутов типа BigDecimal
в полях Precision и Scale необходимо указать точность и масштаб.
- ENUM - перечисление. Перед тем как добавить атрибут типа enum, необходимо создать его в секции Studio Enumerations.
- ASSOCIATION - ссылочный атрибут, создающий простое отношение между двумя сущностями
- COMPOSITION - ссылочный атрибут, создающий отношение с сущностью, не имеющей независимых от текущей сущности значений. Другими словами, текущая сущность владеет связанной сущностью.
- EMBEDDED - встраиваемая сущность.
- Для обоих типов ссылочных атрибутов (ASSOCIATION и COMPOSITION) нужно выбрать связанную сущность в поле Type. Также необходимо указать кардинальность отношения и тип коллекции, если кардинальность отношения -
TO_MANY
.
- Для атрибутов-коллекций требуется указать инверсные атрибуты связанной сущности. Инверсный атрибут можно создать автоматически, выбрав Create inverse attribute в выпадающем списке поля Mapped by. В новом окне откроется редактор свойств атрибута, и вы сможете создать новй атрибут для маппинга атрибута-коллекции на противоположной стороне отношения.
- Для ссылочных атрибутов в полях On delete и/или On delete inverse можно указать политику удаления. Если сущность поддерживает мягкое удаление, оба поля доступны, и результирующие аннотации обрабатываются фреймворком в runtime. В противном случае, Studio будет использовать значение поля On delete inverse при создании foreign key с соответствующим выражением
on delete
.
- Флажок Read only указывает, что значение атрибута не может быть изменено.
- Флажок Mandatory указывает, что атрибут обязателен и не может иметь значение null.
- Поле Column содержит имя соответствующей колонки в базе данных. Это поле заполняется автоматически, как только вы указываете имя атрибута.
- В поле Column definition можно задать собственное определение типа колонки, например:
nvarchar(100) not null
Если поле не пустое, Studio вставит содержимое поля как есть в DDL колонки сразу после имени колонки.
Атрибуты сущности могут быть отредактированы после сохранения. Для этого надо выбрать атрибут в списке, и на панели справа отобразятся его свойства.
Атрибуты можно перемещать вверх и вниз в списке, используя кнопки Up и Down. При перемещении их положение в исходном коде также изменится.