Произвольный класс в качестве типа атрибута сущности не конвертируется

class EmployeeStatusBadge: Serializable {

    private val statuses: StringBuilder = StringBuilder("")

    fun getStatuses(): String = statuses.toString()

    fun setStatuses(statuses: String) {
        this.statuses.insert(0, statuses)
    }

   .../////

     override fun hashCode(): Int {
        return Objects.hashCode(statuses)
    }

    override fun toString(): String {
        return this.getStatuses()
    }

    override fun equals(other: Any?): Boolean {
        if (this === other) return true
        if (javaClass != other?.javaClass) return false

        other as EmployeeStatusBadge

        return statuses == other.statuses
    }
}

@Converter(autoApply = true)
class EmployeeStatusBadgeConverter: AttributeConverter<EmployeeStatusBadge, String> {
    override fun convertToDatabaseColumn(attribute: EmployeeStatusBadge?): String {
        return attribute?.getStatuses() ?: ""
    }

    override fun convertToEntityAttribute(dbData: String?): EmployeeStatusBadge {
        return if (dbData == null)
            EmployeeStatusBadge()
        else {
            val statusBadge = EmployeeStatusBadge()
            statusBadge.setStatuses(dbData)
            statusBadge
        }
    }
}

@DatatypeDef(
    id = "employeeStatusBadge",
    javaClass = EmployeeStatusBadge::class,
            defaultForClass = true
)
@Ddl("varchar(500)")
class EmployeeStatusBadgeDatatype: Datatype<EmployeeStatusBadge> {
    override fun format(value: Any?): String {
        return if (value == null)
                return ""
        else
            (value as EmployeeStatusBadge).getStatuses()
    }

    override fun format(value: Any?, locale: Locale): String {
        return format(value)
    }

    override fun parse(value: String?): EmployeeStatusBadge {
        if (value == null) return EmployeeStatusBadge()
        return try {
            val statusBadge = EmployeeStatusBadge()
            statusBadge.setStatuses(value)
            statusBadge
        } catch (e: Exception) {
            throw ParseException(java.lang.String.format("Cannot parse %s as EmployeeStatusBadge: %s", value, e.toString()), 0)
        }
    }

    override fun parse(value: String?, locale: Locale): EmployeeStatusBadge {
        return parse(value)
    }
}

Атрибут, который использует этот класс

    @Column(name = "STATUS_BADGE", nullable = false)
    @NotNull
    var statusBadge: EmployeeStatusBadge? = null

При попытки получить это сущность возникает ошибка

Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-3002] (Eclipse Persistence Services - 2.7.9.6-jmix): org.eclipse.persistence.exceptions.ConversionException
Exception Description: The object [ ], of class [class java.lang.String], from mapping [org.eclipse.persistence.mappings.DirectToFieldMapping[statusBadge-->EMPLOYEE.STATUS_BADGE]] with descriptor [RelationalDescriptor(pro.siberian.horizon.entity.employee.Employee --> [DatabaseTable(EMPLOYEE)])], could not be converted to [class [B].
2023-04-13 13:12:33.722  WARN 16960 --- [nio-8080-exec-3] eclipselink.logging.all                  : Exception [EclipseLink-3002] (Eclipse Persistence Services - 2.7.9.6-jmix): org.eclipse.persistence.exceptions.ConversionException
Exception Description: The object [ ], of class [class java.lang.String], from mapping [org.eclipse.persistence.mappings.DirectToFieldMapping[statusBadge-->EMPLOYEE.STATUS_BADGE]] with descriptor [RelationalDescriptor(pro.siberian.horizon.entity.employee.Employee --> [DatabaseTable(EMPLOYEE)])], could not be converted to [class [B].
2023-04-13 13:12:33.725 ERROR 16960 --- [nio-8080-exec-3] i.j.u.exception.DefaultExceptionHandler  : Unhandled exception

com.vaadin.server.ServerRpcManager$RpcInvocationException: Unable to invoke method menuItemTriggered in io.jmix.ui.widget.client.verticalmenu.JmixSideMenuServerRpc
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:157) ~[vaadin-server-8.14.3-2-jmix.jar:8.14.3-2-jmix]
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:115) ~[vaadin-server-8.14.3-2-jmix.jar:8.14.3-2-jmix]
	at com.vaadin.server.communication.ServerRpcHandler.handleInvocation(ServerRpcHandler.java:442) ~[vaadin-server-8.14.3-2-jmix.jar:8.14.3-2-jmix]
	at com.vaadin.server.communication.ServerRpcHandler.handleInvocations(ServerRpcHandler.java:407) ~[vaadin-server-8.14.3-2-jmix.jar:8.14.3-2-jmix]
	at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:275) ~[vaadin-server-8.14.3-2-jmix.jar:8.14.3-2-jmix]
	at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:83) ~[vaadin-server-8.14.3-2-jmix.jar:8.14.3-2-jmix]
	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) ~[vaadin-server-8.14.3-2-jmix.jar:8.14.3-2-jmix]
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1636) ~[vaadin-server-8.14.3-2-jmix.jar:8.14.3-2-jmix]
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:465) ~[vaadin-server-8.14.3-2-jmix.jar:8.14.3-2-jmix]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:750) ~[javax.servlet-api-4.0.1.jar:4.0.1]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.73.jar:9.0.73]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at io.jmix.core.impl.logging.LogMdcFilter.doFilterInternal(LogMdcFilter.java:28) ~[jmix-core-1.5.1.jar:na]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.26.jar:5.3.26]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:106) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:97) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:147) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.26.jar:5.3.26]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.26.jar:5.3.26]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.26.jar:5.3.26]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.7.jar:5.7.7]
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.26.jar:5.3.26]
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.26.jar:5.3.26]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.26.jar:5.3.26]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.26.jar:5.3.26]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.26.jar:5.3.26]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.26.jar:5.3.26]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.26.jar:5.3.26]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.26.jar:5.3.26]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:389) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.73.jar:9.0.73]
	at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
Caused by: java.lang.reflect.InvocationTargetException: null
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
	at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
	at com.vaadin.server.ServerRpcManager.applyInvocation(ServerRpcManager.java:153) ~[vaadin-server-8.14.3-2-jmix.jar:8.14.3-2-jmix]
	... 90 common frames omitted
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-3002] (Eclipse Persistence Services - 2.7.9.6-jmix): org.eclipse.persistence.exceptions.ConversionException
Exception Description: The object [ ], of class [class java.lang.String], from mapping [org.eclipse.persistence.mappings.DirectToFieldMapping[statusBadge-->EMPLOYEE.STATUS_BADGE]] with descriptor [RelationalDescriptor(pro.siberian.horizon.entity.employee.Employee --> [DatabaseTable(EMPLOYEE)])], could not be converted to [class [B].
	at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:493) ~[org.eclipse.persistence.jpa-2.7.9-6-jmix.jar:na]
	at io.jmix.eclipselink.impl.JmixEclipseLinkQuery.getResultFromCache(JmixEclipseLinkQuery.java:844) ~[jmix-eclipselink-1.5.1.jar:na]
	at io.jmix.eclipselink.impl.JmixEclipseLinkQuery.getResultList(JmixEclipseLinkQuery.java:138) ~[jmix-eclipselink-1.5.1.jar:na]
	at io.jmix.eclipselink.impl.JpaDataStore.executeQuery(JpaDataStore.java:576) ~[jmix-eclipselink-1.5.1.jar:na]
	at io.jmix.eclipselink.impl.JpaDataStore.loadAll(JpaDataStore.java:167) ~[jmix-eclipselink-1.5.1.jar:na]
	at io.jmix.core.datastore.AbstractDataStore.loadList(AbstractDataStore.java:127) ~[jmix-core-1.5.1.jar:na]
	at io.jmix.core.impl.UnconstrainedDataManagerImpl.loadList(UnconstrainedDataManagerImpl.java:112) ~[jmix-core-1.5.1.jar:na]
	at io.jmix.ui.model.impl.CollectionLoaderImpl._load(CollectionLoaderImpl.java:92) ~[jmix-ui-1.5.1.jar:na]
	at io.jmix.ui.model.impl.CollectionLoaderImpl.load(CollectionLoaderImpl.java:75) ~[jmix-ui-1.5.1.jar:na]
	at io.jmix.ui.component.dataloadcoordinator.OnFrameOwnerEventLoadTrigger.load(OnFrameOwnerEventLoadTrigger.java:48) ~[jmix-ui-1.5.1.jar:na]
	at io.jmix.ui.component.dataloadcoordinator.OnFrameOwnerEventLoadTrigger.lambda$new$0(OnFrameOwnerEventLoadTrigger.java:39) ~[jmix-ui-1.5.1.jar:na]
	at io.jmix.core.common.event.EventHub.publish(EventHub.java:170) ~[jmix-core-1.5.1.jar:na]
	at io.jmix.ui.screen.Screen.fireEvent(Screen.java:124) ~[jmix-ui-1.5.1.jar:na]
	at io.jmix.ui.screen.UiControllerUtils.fireEvent(UiControllerUtils.java:58) ~[jmix-ui-1.5.1.jar:na]
	at io.jmix.ui.sys.ScreensImpl.fireScreenBeforeShowEvent(ScreensImpl.java:1364) ~[jmix-ui-1.5.1.jar:na]
	at io.jmix.ui.sys.ScreensImpl.show(ScreensImpl.java:357) ~[jmix-ui-1.5.1.jar:na]
	at io.jmix.ui.sys.ScreensImpl.showFromNavigation(ScreensImpl.java:452) ~[jmix-ui-1.5.1.jar:na]
	at io.jmix.ui.menu.MenuItemCommands$ScreenCommand.run(MenuItemCommands.java:193) ~[jmix-ui-1.5.1.jar:na]
	at io.jmix.ui.menu.SideMenuBuilder$MenuCommandExecutor.accept(SideMenuBuilder.java:272) ~[jmix-ui-1.5.1.jar:na]
	at io.jmix.ui.menu.SideMenuBuilder$MenuCommandExecutor.accept(SideMenuBuilder.java:257) ~[jmix-ui-1.5.1.jar:na]
	at io.jmix.ui.component.mainwindow.impl.SideMenuImpl$MenuItemImpl.menuSelected(SideMenuImpl.java:587) ~[jmix-ui-1.5.1.jar:na]
	at io.jmix.ui.widget.JmixSideMenu$1.menuItemTriggered(JmixSideMenu.java:91) ~[jmix-ui-1.5.1.jar:na]
	... 95 common frames omitted
Caused by: org.eclipse.persistence.exceptions.ConversionException: 
Exception Description: The object [ ], of class [class java.lang.String], from mapping [org.eclipse.persistence.mappings.DirectToFieldMapping[statusBadge-->EMPLOYEE.STATUS_BADGE]] with descriptor [RelationalDescriptor(pro.siberian.horizon.entity.employee.Employee --> [DatabaseTable(EMPLOYEE)])], could not be converted to [class [B].
	at org.eclipse.persistence.exceptions.ConversionException.couldNotConvertToByteArray(ConversionException.java:118) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.helper.Helper.buildBytesFromHexString(Helper.java:304) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.helper.ConversionManager.convertObjectToByteArray(ConversionManager.java:403) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.helper.ConversionManager.convertObject(ConversionManager.java:215) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.databaseaccess.DatasourcePlatform.convertObject(DatasourcePlatform.java:226) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at io.jmix.eclipselink.impl.dbms.JmixPostgreSQLPlatform.convertObject(JmixPostgreSQLPlatform.java:36) ~[jmix-eclipselink-1.5.1.jar:na]
	at org.eclipse.persistence.mappings.converters.SerializedObjectConverter.convertDataValueToObjectValue(SerializedObjectConverter.java:123) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.mappings.foundation.AbstractDirectMapping.getObjectValue(AbstractDirectMapping.java:625) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.mappings.foundation.AbstractDirectMapping.valueFromRow(AbstractDirectMapping.java:1241) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.mappings.foundation.AbstractDirectMapping.buildCloneFromRow(AbstractDirectMapping.java:227) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildAttributesIntoWorkingCopyClone(ObjectBuilder.java:2038) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildWorkingCopyCloneFromRow(ObjectBuilder.java:2299) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObjectInUnitOfWork(ObjectBuilder.java:885) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObjectInternal(ObjectBuilder.java:772) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:727) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:705) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.queries.ObjectLevelReadQuery.buildObject(ObjectLevelReadQuery.java:858) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.queries.ReadAllQuery.registerResultInUnitOfWork(ReadAllQuery.java:987) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.queries.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:598) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:1229) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:911) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.queries.ObjectLevelReadQuery.execute(ObjectLevelReadQuery.java:1188) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.queries.ReadAllQuery.execute(ReadAllQuery.java:485) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.queries.ObjectLevelReadQuery.executeInUnitOfWork(ObjectLevelReadQuery.java:1276) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:3043) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1895) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1877) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1842) ~[org.eclipse.persistence.core-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.jpa.QueryImpl.executeReadQuery(QueryImpl.java:262) ~[org.eclipse.persistence.jpa-2.7.9-6-jmix.jar:na]
	at org.eclipse.persistence.internal.jpa.QueryImpl.getResultList(QueryImpl.java:482) ~[org.eclipse.persistence.jpa-2.7.9-6-jmix.jar:na]
	... 116 common frames omitted


Hot deploy: EmployeeStatusBadge.kt [17462 ms]
Compiled files:
    pro\siberian\horizon\entity\employee\EmployeeStatusBadge.kt
    pro\siberian\horizon\listener\EmployeeEventListener.kt

В базе данных пока хранятся просто пустые строки, то есть по дэфолту задал defaultValue=" "
image

Попробуйте добавить nullabilty в классы. EmployeeStatusBadgeConverter и EmployeeStatusBadgeDatatype, то есть методы этих классов должны получать и возвращать nullable значения.
override fun convertToDatabaseColumn(attribute: EmployeeStatusBadge?): String?
override fun format(value: Any?): String?
И тд.

Возможно стоит параметру statusBadge Добавить аннотации PropertyDatatype и Convert

@PropertyDatatype("employeeStatusBadge")
@Convert(converter = EmployeeStatusBadgeConverter::class)
1 симпатия

Так… я только что попробовал. И у меня все работает (Как у вас написано без изменений). Не уверен, что у вас именно не работает? И Browse и Редактор у меня открывается.
image
image
image

Возможно у вас с классом было что не так? Попробуйте удалить build или в папке .jmix возможно сохранились старые файлы которые деплоятся в tomcat. Не уверен как ща происходит hot deploy в tomcat

1 симпатия

А какая версия jmix ?

1.5.1
Возможно разница в том что у вас postgresDB а для теста я использовал hsqldb

Так и не понял, что произошло

Откатился на несколько коммитов назад, когда класса еще не было, создал его заново и все заработало корректно :slight_smile:

Возможно действительно было что-то со сборкой

Буду дальше отслеживать этот момент - надеюсь, что такое больше не повторится

В любом случае, спасибо за помощь!