Hey,
for local tests i want to start the DS spring boot app with model pre-loaded on start up.
I use the “dataservices-embedded_h2” as a temporary database.
However, the start-up fails when trying to save the provided models with the execption:
INFO [main] c.m.a.d.i.BusinessModelInitializer: Importing business models: file:../../../erutdg-dist/src/main/resources/etc/a12ds/models
WARN [main] o.h.e.j.s.SqlExceptionHelper: SQL Error: 42102, SQLState: 42S02
ERROR [main] o.h.e.j.s.SqlExceptionHelper: Tabelle "MODEL_FIELDS" nicht gefunden
Table "MODEL_FIELDS" not found; SQL statement:
insert into model_fields (data,field_name,field_type,model_name,id) values (?,?,?,?,default) [42102-224]
2025-08-06 13:28:09,319 WARN [main] c.m.a.d.m.b.ModelBulkImporter: could not prepare statement [Tabelle "MODEL_FIELDS" nicht gefunden
Table "MODEL_FIELDS" not found; SQL statement:
insert into model_fields (data,field_name,field_type,model_name,id) values (?,?,?,?,default) [42102-224]] [insert into model_fields (data,field_name,field_type,model_name,id) values (?,?,?,?,default)]; SQL [insert into model_fields (data,field_name,field_type,model_name,id) values (?,?,?,?,default)]
org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement [Tabelle "MODEL_FIELDS" nicht gefunden
Table "MODEL_FIELDS" not found; SQL statement:
insert into model_fields (data,field_name,field_type,model_name,id) values (?,?,?,?,default) [42102-224]] [insert into model_fields (data,field_name,field_type,model_name,id) values (?,?,?,?,default)]; SQL [insert into model_fields (data,field_name,field_type,model_name,id) values (?,?,?,?,default)]
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:281)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:256)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:241)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:560)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:343)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:160)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:165)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223)
at jdk.proxy2/jdk.proxy2.$Proxy240.save(Unknown Source)
at com.mgmtp.a12.dataservices.query.indexing.internal.persistence.DocumentModelFieldsIndexer$1.visitField(DocumentModelFieldsIndexer.java:97)
at com.mgmtp.a12.kernel.md.model.api.visitor.DocumentModelWalker.visitElementInheritance(DocumentModelWalker.java:151)
at com.mgmtp.a12.kernel.md.model.api.visitor.DocumentModelWalker.acceptElement(DocumentModelWalker.java:110)
at com.mgmtp.a12.kernel.md.model.api.visitor.DocumentModelWalker.acceptChildren(DocumentModelWalker.java:180)
at com.mgmtp.a12.kernel.md.model.api.visitor.DocumentModelWalker.visitElementInheritance(DocumentModelWalker.java:156)
at com.mgmtp.a12.kernel.md.model.api.visitor.DocumentModelWalker.acceptElement(DocumentModelWalker.java:110)
at com.mgmtp.a12.kernel.md.model.api.visitor.DocumentModelWalker.acceptChildren(DocumentModelWalker.java:180)
at com.mgmtp.a12.kernel.md.model.api.visitor.DocumentModelWalker.acceptElements(DocumentModelWalker.java:100)
at com.mgmtp.a12.kernel.md.model.api.visitor.DocumentModelWalker.acceptDocumentModel(DocumentModelWalker.java:75)
at com.mgmtp.a12.dataservices.query.indexing.internal.persistence.DocumentModelFieldsIndexer.updateNewFields(DocumentModelFieldsIndexer.java:91)
at com.mgmtp.a12.dataservices.query.indexing.internal.persistence.DocumentModelFieldsIndexer.indexDocumentModelFieldsOnCreate(DocumentModelFieldsIndexer.java:62)
at com.mgmtp.a12.dataservices.model.internal.DefaultModelService.create(DefaultModelService.java:82)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728)
at com.mgmtp.a12.dataservices.model.internal.DefaultModelService$$SpringCGLIB$$0.create(<generated>)
at com.mgmtp.a12.dataservices.model.bulkload.ModelBulkImporter.createOrUpdateModel(ModelBulkImporter.java:201)
at com.mgmtp.a12.dataservices.model.bulkload.ModelBulkImporter.getSavedHeader(ModelBulkImporter.java:194)
at com.mgmtp.a12.dataservices.model.bulkload.ModelBulkImporter.expandAndSaveDocumentModel(ModelBulkImporter.java:162)
at com.mgmtp.a12.dataservices.model.bulkload.ModelBulkImporter.lambda$processModels$0(ModelBulkImporter.java:113)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1787)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:310)
at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
at com.mgmtp.a12.dataservices.model.bulkload.ModelBulkImporter.processModels(ModelBulkImporter.java:116)
at com.mgmtp.a12.dataservices.model.bulkload.ModelBulkImporter.doImport(ModelBulkImporter.java:97)
at com.mgmtp.a12.dataservices.initialization.BusinessModelInitializer.lambda$importBusinessModels$0(BusinessModelInitializer.java:52)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:1024)
at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
at com.mgmtp.a12.dataservices.initialization.BusinessModelInitializer.importBusinessModels(BusinessModelInitializer.java:49)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:359)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728)
at com.mgmtp.a12.dataservices.initialization.BusinessModelInitializer$$SpringCGLIB$$0.importBusinessModels(<generated>)
at com.mgmtp.a12.dataservices.initialization.internal.DataServicesInitializationService.importModelsConditionally(DataServicesInitializationService.java:104)
at com.mgmtp.a12.dataservices.initialization.internal.DataServicesInitializationService.lambda$runInitialization$0(DataServicesInitializationService.java:71)
at com.mgmtp.a12.uaa.authentication.backend.BackendAuthenticationService.executeWithBackendAuthentication(BackendAuthenticationService.java:52)
at com.mgmtp.a12.dataservices.initialization.internal.DataServicesInitializationService.runInitialization(DataServicesInitializationService.java:67)
at com.mgmtp.a12.dataservices.initialization.DataServicesInitializationListener.onApplicationInitialization(DataServicesInitializationListener.java:44)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:382)
at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:254)
at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:173)
at com.mgmtp.a12.dataservices.common.events.internal.CommonDataServicesListenerMethodAdapter.onApplicationEvent(CommonDataServicesListenerMethodAdapter.java:45)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:185)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:178)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:156)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:454)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:387)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:1009)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:630)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:318)
at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:149)
at com.mgmtp.a12.dataservices.server.app.ServerApplication.start(ServerApplication.java:47)
at com.mgmtp.a12.dataservices.server.app.ServerApplication.main(ServerApplication.java:34)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102)
at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64)
at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40)
The only thing I noticed, that in the logs liquibase changesets were only executed up until version 37.0.0 - is there a changeset missing?
Or am I missing any configurations?
I already tried the embedded postgres alternative, for which the import appears to work. However, from time to time the embedded postgres appears to keep connections open which blocks clearing the temporary database…
Thanks a lot, Rene