Проект на Kotlin - проблема с инициализацией и обновлением БД

Добрый день.
Обстановка: CUBA platform 7.2.13, Kotlin, настройки сделаны по документации.
Проблема:

  1. Создаю модель “EmployeeEntity”, унаследованную от “User”:
package com.company.sc.entity.catalog
import com.haulmont.cuba.security.entity.User
import javax.persistence.Column
import javax.persistence.Table
@Table(name = "SC_EMPLOYEE_ENTITY")
@javax.persistence.Entity(name = "sc_EmployeeEntity")
open class EmployeeEntity : User() {
    @Column(name = "PERSONNEL_NUMBER", nullable = false, unique = true)
    var personnelNumber: Int? = null

    @Column(name = "IPN")
    var ipn: String? = null

    companion object {
        private const val serialVersionUID = 5500813977478267153L
    }
}
  1. Генерирую скрипты инициализации и обновления БД. Результат:
    10.create - пустой
    20.create -
-- begin SC_EMPLOYEE_ENTITY
create unique index IDX_SC_EMPLOYEE_ENTITY_UK_PERSONNEL_NUMBER on SC_EMPLOYEE_ENTITY (PERSONNEL_NUMBER) where DELETE_TS is null ^
-- end SC_EMPLOYEE_ENTITY 

30.create - пустой
createEmployeeEntity01 - пустой
createEmployeeEntity02 -

create unique index IDX_SC_EMPLOYEE_ENTITY_UK_PERSONNEL_NUMBER on SC_EMPLOYEE_ENTITY (PERSONNEL_NUMBER) where DELETE_TS is null ;

БД создается, но не обновляется.
Протестировано в CUBA Studio и IntelliJ Idea.
Если убрать наследование, все работает штатно.

Вопрос: Не подскажите, это моя ошибка или поддержка kotlin хромает?

Добрый день.

Уточните, пожалуйста, аннотацию @Table(name = "SC_EMPLOYEE_ENTITY") на сущность вы добавили сами или это было сгенерированно Студией?

Стратегия наследования у сущности User - SINGLE_TABLE и в редакторе дочерней сущности нет возможности добавить имя таблицы.

Без аннотации @Table в файле 10.create генерируется следующий скрипт

-- begin SEC_USER
-- alter table SEC_USER add column PERSONNEL_NUMBER integer ^
-- update SEC_USER set PERSONNEL_NUMBER = <default_value> ^
-- alter table SEC_USER alter column PERSONNEL_NUMBER set not null ^
alter table SEC_USER add column PERSONNEL_NUMBER integer ^
alter table SEC_USER add column IPN varchar(255) ^
alter table SEC_USER add column DTYPE varchar(31) ^
update SEC_USER set DTYPE = 'sec$User' where DTYPE is null ^
-- end SEC_USER

После обновления базы данных при последующей генерации скриптов, будут сгенерированы следующие скрипты.
В файле 210419-2-updateSecUser:

-- update SEC_USER set PERSONNEL_NUMBER = <default_value> where PERSONNEL_NUMBER is null ;
alter table SEC_USER alter column PERSONNEL_NUMBER set not null ;

В файле 210419-2-updateSecUser01:

create unique index IDX_SEC_USER_UNIQ_PERSONNEL_NUMBER on SEC_USER (PERSONNEL_NUMBER);

С уважением,
Наталья

1 симпатия

Добрый день, Наталья.
Вы правы, мой косяк. Спасибо за ответ.

С уважением, Алексей.