A.6. metadata.xml
Файлы данного типа используются для регистрации кастомных типов данных и неперсистентных сущностей, и для задания мета-аннотаций.
Схема XML доступна по адресу http://schemas.haulmont.com/cuba/7.2/metadata.xsd.
Расположение файла metadata.xml
задается в свойстве приложения cuba.metadataConfig.
Рассмотрим структуру файла.
metadata
- корневой элемент.
Элементы metadata
:
-
datatypes
- опциональный описатель кастомных типов данных.Элементы
datatypes
:-
datatype
- описатель типа данных. Имеет следующие атрибуты:-
id
- идентификатор, используемый для ссылки на данный тип из аннотации @MetaProperty. -
class
- задает класс имплементации. -
sqlType
- необязательный атрибут, задающий SQL-тип базы данных, подходящий для хранения значений данного типа. SQL-тип используется в Studio при генерации скриптов для БД. Подробнее см. Пример специализированного Datatype.
Элемент
datatype
может также содержать другие атрибуты, зависящие от конкретного класса реализацииDatatype
. -
-
Должен иметь атрибут class
, задающий класс реализации. Другие атрибуты опциональны и зависят от реализации. См. Пример специализированного Datatype.
-
metadata-model
- описатель метамодели проекта.Атрибуты
metadata-model
:-
root-package
- корневой пакет проекта.Элементы
metadata-model
: -
class
- класс неперсистентной сущности.
-
-
annotations
- корень элементов присвоения мета-аннотаций сущностей.Элемент
annotations
содержит список элементовentity
, которые определяют сущности, для которых задаются мета-аннотации. Каждый элементentity
должен содержать атрибутclass
, который задает класс сущности, и список элементовannotation
.Элемент
annotation
определяет мета-аннотацию. Он имеет атрибутname
, соответствующий имени мета-аннотации. Мэп атрибутов мета-аннотации задается списком вложенных элементовattribute
.
Пример:
<metadata xmlns="http://schemas.haulmont.com/cuba/metadata.xsd">
<metadata-model root-package="com.sample.sales">
<class>com.sample.sales.entity.SomeNonPersistentEntity</class>
<class>com.sample.sales.entity.OtherNonPersistentEntity</class>
</metadata-model>
<annotations>
<entity class="com.haulmont.cuba.security.entity.User">
<annotation name="com.haulmont.cuba.core.entity.annotation.TrackEditScreenHistory">
<attribute name="value" value="true" datatype="boolean"/>
</annotation>
<annotation name="com.haulmont.cuba.core.entity.annotation.EnableRestore">
<attribute name="value" value="true" datatype="boolean"/>
</annotation>
</entity>
<entity class="com.haulmont.cuba.core.entity.Category">
<annotation name="com.haulmont.cuba.core.entity.annotation.SystemLevel">
<attribute name="value" value="false" datatype="boolean"/>
</annotation>
</entity>
</annotations>
</metadata>