Параметры аннотаций сущностей

В данном разделе описаны правила формирования значений аннотаций сущностей при создании объектов в THESIS Studio. Сведения предназначены для администратора или разработчика, выполняющего настройку и сопровождение проекта.

@EntityEntity

Имя сущности, задаваемое параметром name аннотации @Entity, формируется по шаблону:

${namespace}${separator}${className}

Где:

Например, если пространство имен проекта — dummy, то для сущности с классом MyDocument будет сформировано имя dummy$M@TableDocum@TableTablent.

@Table

Название таблицы, задаваемое параметром name аннотации @Table, формируется по шаблону:
${upperNamespace}_${upperUnderscoredClassName}.
Где:

  • upperNamespace - пространство имен, преобразованное к верхнему регистру;
  • upperUnderscoredClassName - имя класса сущности, преобразованное к верхнему регистру, с разделением слов символом подчеркивания.

Например, если пространство имен проекта — dummy, то для сущности с классом MyDocument будет сформировано название таблицы DUMM@PrimaryKeyJoinColumn**_MY_DOCUMENT**.

@PrimaryKeyJoinColumn

Аннотация @PrimaryKeyJoinColumn используется в иерархии наследования сущностей со стратегией JOIN. Значения ее параметров формируются следующим образом:

  • referencedColumnName - имя столбца первичного ключа сущности иерархии.
  • name - значение, сформированное по шаблону ${upperUnderscoredRootEntityClassName}_${referencedColumnName}.
    Где upperUnderscoredRootEntityClassName — имя класса корневой сущности иерархии, преобразованное к верхнему регистру, с разделением слов символом подчеркивания..

Например, для карточек, документов, задач и карточек проекта всегда формируется аннотация:

@Pr@DiscriminatorValuemaryKeyJoinColumn(name = "CARD_ID",@DiscriminatorValuereferencedColumnName = "ID")

@DiscriminatorValue

Значение аннотации @DiscriminatorValue определяется с учетом типа столбца дискриминатора, заданного параметром discriminatorType аннотации @DiscriminatorColumn, и уже используемых значений дискриминаторов в иерархии сущностей.

Правила формирования значения зависят от типа дискриминатора:

  1. CHAR. Выполняется поиск первого неиспользуемого символа, начиная с латинской буквы A. Найденный символ используется как значение дискриминатора новой сущности.

  2. INTEGER. Определяется максимальное из используемых значений дискриминатора. Если оно больше 2000, используется значение, увеличенное на 100. В остальных случаях используется значение 2000. Таким образом, начальное значение целочисленного дискриминатора для иерархии сущностей в проекте расширения равно 2000.

  3. STRING. Логика зависит от длины значения дискриминатора, заданной параметром length аннотации @DiscriminatorColumn:

    • если допустимой длины достаточно для имени сущности, заданного параметром name аннотации @Entity, используется имя сущности;

    • если допустимой длины недостаточно, проверяется возможность использовать имя класса сущности;

    • если имя класса сущности не превышает допустимую длину и не используется в иерархии, оно применяется как значение дискриминатора;

    • если имя класса использовать нельзя, формируется случайная последовательность символов допустимой длины.

  4. Если аннотация @DiscriminatorColumn в сущности отсутствует, по умолчанию используется значение STRING[31]. В этом случае:

    • если длина значения дискриминатора родительской сущности меньше 5, формируется случайная последовательность символов такой же длины. Последовательность проверяется на уникальность в иерархии и при совпадении формируется повторно;

    • если длина значения дискриминатора родительской сущности больше 5, в качестве значения дискриминатора используется имя сущности.

Важно!
Если в качестве значения дискриминатора используется имя сущности, необходимо самостоятельно проверить допустимость такого значения и при необходимости скорректировать его.