From a783f3b5ed030f0d75de1e27df3dd78fc7c11045 Mon Sep 17 00:00:00 2001 From: Jennifer Arps Date: Mon, 17 Jan 2022 11:53:22 +0100 Subject: [PATCH] [#141] add principalExtractor --- pom.xml | 8 + .../java/de/bonndan/nivio/Application.java | 2 +- .../de/bonndan/nivio/appuser/AppUser.java | 23 +- .../nivio/security/PasswordEncoder.java | 15 - .../nivio/security/SecurityConfig.java | 42 +- src/main/resources/data/user.lock.db | 6 +- src/main/resources/data/user.mv.db | Bin 24576 -> 28672 bytes src/main/resources/data/user.trace.db | 496 ++++++++++++++++++ 8 files changed, 543 insertions(+), 49 deletions(-) delete mode 100644 src/main/java/de/bonndan/nivio/security/PasswordEncoder.java diff --git a/pom.xml b/pom.xml index 387949f79..07be16ee3 100644 --- a/pom.xml +++ b/pom.xml @@ -62,6 +62,14 @@ spring-boot-starter-oauth2-client + + + org.springframework.security.oauth.boot + spring-security-oauth2-autoconfigure + 2.6.2 + + + com.fasterxml.jackson.dataformat jackson-dataformat-yaml diff --git a/src/main/java/de/bonndan/nivio/Application.java b/src/main/java/de/bonndan/nivio/Application.java index 613896d46..b82bf0e7e 100644 --- a/src/main/java/de/bonndan/nivio/Application.java +++ b/src/main/java/de/bonndan/nivio/Application.java @@ -20,7 +20,7 @@ public static void main(String[] args) { @Bean CommandLineRunner commandLineRunner(AppUserRepository userRepository) { return args -> { - AppUser mary = new AppUser("Mary", "mary88", "m@online.com", "secret123", AppUserRole.USER, false, true ); + AppUser mary = new AppUser("Mary", "mary88", "m@online.com", "avatarURL", AppUserRole.USER, false, true ); userRepository.save(mary); }; } diff --git a/src/main/java/de/bonndan/nivio/appuser/AppUser.java b/src/main/java/de/bonndan/nivio/appuser/AppUser.java index 5fd5ef74f..355cffe0f 100644 --- a/src/main/java/de/bonndan/nivio/appuser/AppUser.java +++ b/src/main/java/de/bonndan/nivio/appuser/AppUser.java @@ -1,6 +1,9 @@ package de.bonndan.nivio.appuser; -import lombok.*; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; @@ -48,11 +51,11 @@ public class AppUser implements UserDetails { @Column( - name = "user_name", + name = "alias", nullable = false, columnDefinition = "TEXT" ) - private String userName; + private String alias; @Column( name = "email", @@ -62,11 +65,11 @@ public class AppUser implements UserDetails { private String email; @Column( - name = "password", + name = "avatar_url", nullable = false, columnDefinition = "TEXT" ) - private String password; + private String avatarUrl; @Column( @@ -83,14 +86,14 @@ public class AppUser implements UserDetails { public AppUser(String name, String userName, String email, - String password, + String avatarUrl, AppUserRole appUserRole, Boolean locked, Boolean enabled) { this.name = name; - this.userName = userName; + this.alias = userName; this.email = email; - this.password = password; + this.avatarUrl = avatarUrl; this.appUserRole = appUserRole; this.locked = locked; this.enabled = enabled; @@ -105,12 +108,12 @@ public Collection getAuthorities() { @Override public String getPassword() { - return password; + return null; } @Override public String getUsername() { - return userName; + return alias; } @Override diff --git a/src/main/java/de/bonndan/nivio/security/PasswordEncoder.java b/src/main/java/de/bonndan/nivio/security/PasswordEncoder.java deleted file mode 100644 index 3020f666a..000000000 --- a/src/main/java/de/bonndan/nivio/security/PasswordEncoder.java +++ /dev/null @@ -1,15 +0,0 @@ -package de.bonndan.nivio.security; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; - -@Configuration -public class PasswordEncoder { - - @Bean - public BCryptPasswordEncoder bCryptPasswordEncoder() { - return new BCryptPasswordEncoder(); - } - -} diff --git a/src/main/java/de/bonndan/nivio/security/SecurityConfig.java b/src/main/java/de/bonndan/nivio/security/SecurityConfig.java index a0a4d6813..2e1daea44 100644 --- a/src/main/java/de/bonndan/nivio/security/SecurityConfig.java +++ b/src/main/java/de/bonndan/nivio/security/SecurityConfig.java @@ -1,9 +1,9 @@ package de.bonndan.nivio.security; import de.bonndan.nivio.appuser.AppUserService; -import lombok.AllArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.boot.autoconfigure.security.oauth2.resource.PrincipalExtractor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.authentication.dao.DaoAuthenticationProvider; @@ -30,7 +30,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { private final AppUserService appUserService; - private final BCryptPasswordEncoder bCryptPasswordEncoder; public static final String LOGIN_MODE_REQUIRED = "required"; public static final String LOGIN_MODE_OPTIONAL = "optional"; @@ -44,9 +43,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { private final AuthConfigProperties properties; - public SecurityConfig(AppUserService appUserService, BCryptPasswordEncoder bCryptPasswordEncoder, AuthConfigProperties properties) { + public SecurityConfig(AppUserService appUserService, AuthConfigProperties properties) { this.appUserService = appUserService; - this.bCryptPasswordEncoder = bCryptPasswordEncoder; this.properties = properties; } @@ -158,19 +156,23 @@ public void writeHeaders(HttpServletRequest request, HttpServletResponse respons } - - @Override - protected void configure(AuthenticationManagerBuilder auth) throws Exception { - auth.authenticationProvider(daoAuthenticationProvider()); - } - - @Bean - public DaoAuthenticationProvider daoAuthenticationProvider() { - DaoAuthenticationProvider provider = - new DaoAuthenticationProvider(); - provider.setPasswordEncoder(bCryptPasswordEncoder); - provider.setUserDetailsService(appUserService); - - return provider; - } -} +// @Bean +// public PrincipalExtractor githubPrincipalExtractor() { +// return new GithubPrincipalExtractor(); +// } +// +// @Override +// protected void configure(AuthenticationManagerBuilder auth) throws Exception { +// auth.authenticationProvider(daoAuthenticationProvider()); +// } +// +// @Bean +// public DaoAuthenticationProvider daoAuthenticationProvider() { +// DaoAuthenticationProvider provider = +// new DaoAuthenticationProvider(); +// provider.setUserDetailsService(appUserService); +// +// return provider; +// } + +} \ No newline at end of file diff --git a/src/main/resources/data/user.lock.db b/src/main/resources/data/user.lock.db index fd494346e..897269f48 100644 --- a/src/main/resources/data/user.lock.db +++ b/src/main/resources/data/user.lock.db @@ -1,6 +1,6 @@ #FileLock -#Wed Jan 12 13:55:06 CET 2022 -server=localhost\:60731 +#Mon Jan 17 11:50:05 CET 2022 +server=localhost\:63786 hostName=localhost method=file -id=17e4e5b329af9f5f04f04ca0df6000cc4546139b105 +id=17e67a88907a1f2058e2af25fc3d93fc44265973b37 diff --git a/src/main/resources/data/user.mv.db b/src/main/resources/data/user.mv.db index d6b46f60c085dbf7f7c60dc8f07df5316be6b727..8cff40eca9d2630b5ad7eca5075980068b15995c 100644 GIT binary patch literal 28672 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 diff --git a/src/main/resources/data/user.trace.db b/src/main/resources/data/user.trace.db index a0d61cf73..6ee38ccc9 100644 --- a/src/main/resources/data/user.trace.db +++ b/src/main/resources/data/user.trace.db @@ -1308,3 +1308,499 @@ org.h2.jdbc.JdbcSQLFeatureNotSupportedException: Feature not supported: "Index o at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) +2022-01-17 11:38:24 jdbc[3]: exception +org.h2.jdbc.JdbcSQLFeatureNotSupportedException: Feature not supported: "Index on BLOB or CLOB column: ""EMAIL"" TEXT NOT NULL"; SQL statement: + + alter table user + add constraint user_email_unique unique (email) [50100-200] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:507) + at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) + at org.h2.message.DbException.get(DbException.java:205) + at org.h2.message.DbException.get(DbException.java:181) + at org.h2.message.DbException.getUnsupportedException(DbException.java:269) + at org.h2.index.BaseIndex.checkIndexColumnTypes(BaseIndex.java:76) + at org.h2.mvstore.db.MVSecondaryIndex.(MVSecondaryIndex.java:56) + at org.h2.mvstore.db.MVTable.addIndex(MVTable.java:366) + at org.h2.command.ddl.AlterTableAddConstraint.createIndex(AlterTableAddConstraint.java:298) + at org.h2.command.ddl.AlterTableAddConstraint.tryUpdate(AlterTableAddConstraint.java:176) + at org.h2.command.ddl.AlterTableAddConstraint.update(AlterTableAddConstraint.java:78) + at org.h2.command.CommandContainer.update(CommandContainer.java:198) + at org.h2.command.Command.executeUpdate(Command.java:251) + at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:228) + at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:201) + at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) + at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) + at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:458) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:442) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:361) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:169) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:138) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:124) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:164) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:81) + at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:335) + at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) + at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498) + at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) + at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:302) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290) + at de.bonndan.nivio.Application.main(Application.java:17) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) +2022-01-17 11:41:33 jdbc[3]: exception +org.h2.jdbc.JdbcSQLFeatureNotSupportedException: Feature not supported: "Index on BLOB or CLOB column: ""EMAIL"" TEXT NOT NULL"; SQL statement: + + alter table user + add constraint user_email_unique unique (email) [50100-200] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:507) + at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) + at org.h2.message.DbException.get(DbException.java:205) + at org.h2.message.DbException.get(DbException.java:181) + at org.h2.message.DbException.getUnsupportedException(DbException.java:269) + at org.h2.index.BaseIndex.checkIndexColumnTypes(BaseIndex.java:76) + at org.h2.mvstore.db.MVSecondaryIndex.(MVSecondaryIndex.java:56) + at org.h2.mvstore.db.MVTable.addIndex(MVTable.java:366) + at org.h2.command.ddl.AlterTableAddConstraint.createIndex(AlterTableAddConstraint.java:298) + at org.h2.command.ddl.AlterTableAddConstraint.tryUpdate(AlterTableAddConstraint.java:176) + at org.h2.command.ddl.AlterTableAddConstraint.update(AlterTableAddConstraint.java:78) + at org.h2.command.CommandContainer.update(CommandContainer.java:198) + at org.h2.command.Command.executeUpdate(Command.java:251) + at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:228) + at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:201) + at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) + at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) + at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:458) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:442) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:361) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:169) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:138) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:124) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:164) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:81) + at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:335) + at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) + at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498) + at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) + at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:302) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290) + at de.bonndan.nivio.Application.main(Application.java:17) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) +2022-01-17 11:42:39 jdbc[3]: exception +org.h2.jdbc.JdbcSQLFeatureNotSupportedException: Feature not supported: "Index on BLOB or CLOB column: ""EMAIL"" TEXT NOT NULL"; SQL statement: + + alter table user + add constraint user_email_unique unique (email) [50100-200] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:507) + at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) + at org.h2.message.DbException.get(DbException.java:205) + at org.h2.message.DbException.get(DbException.java:181) + at org.h2.message.DbException.getUnsupportedException(DbException.java:269) + at org.h2.index.BaseIndex.checkIndexColumnTypes(BaseIndex.java:76) + at org.h2.mvstore.db.MVSecondaryIndex.(MVSecondaryIndex.java:56) + at org.h2.mvstore.db.MVTable.addIndex(MVTable.java:366) + at org.h2.command.ddl.AlterTableAddConstraint.createIndex(AlterTableAddConstraint.java:298) + at org.h2.command.ddl.AlterTableAddConstraint.tryUpdate(AlterTableAddConstraint.java:176) + at org.h2.command.ddl.AlterTableAddConstraint.update(AlterTableAddConstraint.java:78) + at org.h2.command.CommandContainer.update(CommandContainer.java:198) + at org.h2.command.Command.executeUpdate(Command.java:251) + at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:228) + at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:201) + at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) + at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) + at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:458) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:442) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:361) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:169) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:138) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:124) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:164) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:81) + at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:335) + at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) + at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498) + at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) + at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:302) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290) + at de.bonndan.nivio.Application.main(Application.java:17) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) +2022-01-17 11:44:46 jdbc[3]: exception +org.h2.jdbc.JdbcSQLFeatureNotSupportedException: Feature not supported: "Index on BLOB or CLOB column: ""EMAIL"" TEXT NOT NULL"; SQL statement: + + alter table user + add constraint user_email_unique unique (email) [50100-200] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:507) + at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) + at org.h2.message.DbException.get(DbException.java:205) + at org.h2.message.DbException.get(DbException.java:181) + at org.h2.message.DbException.getUnsupportedException(DbException.java:269) + at org.h2.index.BaseIndex.checkIndexColumnTypes(BaseIndex.java:76) + at org.h2.mvstore.db.MVSecondaryIndex.(MVSecondaryIndex.java:56) + at org.h2.mvstore.db.MVTable.addIndex(MVTable.java:366) + at org.h2.command.ddl.AlterTableAddConstraint.createIndex(AlterTableAddConstraint.java:298) + at org.h2.command.ddl.AlterTableAddConstraint.tryUpdate(AlterTableAddConstraint.java:176) + at org.h2.command.ddl.AlterTableAddConstraint.update(AlterTableAddConstraint.java:78) + at org.h2.command.CommandContainer.update(CommandContainer.java:198) + at org.h2.command.Command.executeUpdate(Command.java:251) + at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:228) + at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:201) + at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) + at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) + at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:458) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:442) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:361) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:169) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:138) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:124) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:164) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:81) + at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:335) + at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) + at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498) + at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) + at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:302) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290) + at de.bonndan.nivio.Application.main(Application.java:17) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) +2022-01-17 11:46:25 jdbc[3]: exception +org.h2.jdbc.JdbcSQLFeatureNotSupportedException: Feature not supported: "Index on BLOB or CLOB column: ""EMAIL"" TEXT NOT NULL"; SQL statement: + + alter table user + add constraint user_email_unique unique (email) [50100-200] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:507) + at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) + at org.h2.message.DbException.get(DbException.java:205) + at org.h2.message.DbException.get(DbException.java:181) + at org.h2.message.DbException.getUnsupportedException(DbException.java:269) + at org.h2.index.BaseIndex.checkIndexColumnTypes(BaseIndex.java:76) + at org.h2.mvstore.db.MVSecondaryIndex.(MVSecondaryIndex.java:56) + at org.h2.mvstore.db.MVTable.addIndex(MVTable.java:366) + at org.h2.command.ddl.AlterTableAddConstraint.createIndex(AlterTableAddConstraint.java:298) + at org.h2.command.ddl.AlterTableAddConstraint.tryUpdate(AlterTableAddConstraint.java:176) + at org.h2.command.ddl.AlterTableAddConstraint.update(AlterTableAddConstraint.java:78) + at org.h2.command.CommandContainer.update(CommandContainer.java:198) + at org.h2.command.Command.executeUpdate(Command.java:251) + at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:228) + at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:201) + at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) + at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) + at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:458) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:442) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:361) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:169) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:138) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:124) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:164) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:81) + at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:335) + at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) + at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498) + at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) + at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:302) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290) + at de.bonndan.nivio.Application.main(Application.java:17) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) +2022-01-17 11:48:22 jdbc[3]: exception +org.h2.jdbc.JdbcSQLFeatureNotSupportedException: Feature not supported: "Index on BLOB or CLOB column: ""EMAIL"" TEXT NOT NULL"; SQL statement: + + alter table user + add constraint user_email_unique unique (email) [50100-200] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:507) + at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) + at org.h2.message.DbException.get(DbException.java:205) + at org.h2.message.DbException.get(DbException.java:181) + at org.h2.message.DbException.getUnsupportedException(DbException.java:269) + at org.h2.index.BaseIndex.checkIndexColumnTypes(BaseIndex.java:76) + at org.h2.mvstore.db.MVSecondaryIndex.(MVSecondaryIndex.java:56) + at org.h2.mvstore.db.MVTable.addIndex(MVTable.java:366) + at org.h2.command.ddl.AlterTableAddConstraint.createIndex(AlterTableAddConstraint.java:298) + at org.h2.command.ddl.AlterTableAddConstraint.tryUpdate(AlterTableAddConstraint.java:176) + at org.h2.command.ddl.AlterTableAddConstraint.update(AlterTableAddConstraint.java:78) + at org.h2.command.CommandContainer.update(CommandContainer.java:198) + at org.h2.command.Command.executeUpdate(Command.java:251) + at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:228) + at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:201) + at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) + at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) + at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:458) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:442) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:361) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:169) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:138) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:124) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:164) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:81) + at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:335) + at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) + at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498) + at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) + at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:302) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290) + at de.bonndan.nivio.Application.main(Application.java:17) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) +2022-01-17 11:48:47 jdbc[3]: exception +org.h2.jdbc.JdbcSQLFeatureNotSupportedException: Feature not supported: "Index on BLOB or CLOB column: ""EMAIL"" TEXT NOT NULL"; SQL statement: + + alter table user + add constraint user_email_unique unique (email) [50100-200] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:507) + at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) + at org.h2.message.DbException.get(DbException.java:205) + at org.h2.message.DbException.get(DbException.java:181) + at org.h2.message.DbException.getUnsupportedException(DbException.java:269) + at org.h2.index.BaseIndex.checkIndexColumnTypes(BaseIndex.java:76) + at org.h2.mvstore.db.MVSecondaryIndex.(MVSecondaryIndex.java:56) + at org.h2.mvstore.db.MVTable.addIndex(MVTable.java:366) + at org.h2.command.ddl.AlterTableAddConstraint.createIndex(AlterTableAddConstraint.java:298) + at org.h2.command.ddl.AlterTableAddConstraint.tryUpdate(AlterTableAddConstraint.java:176) + at org.h2.command.ddl.AlterTableAddConstraint.update(AlterTableAddConstraint.java:78) + at org.h2.command.CommandContainer.update(CommandContainer.java:198) + at org.h2.command.Command.executeUpdate(Command.java:251) + at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:228) + at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:201) + at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) + at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) + at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:458) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:442) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:361) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:169) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:138) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:124) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:164) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:81) + at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:335) + at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) + at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498) + at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) + at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:302) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290) + at de.bonndan.nivio.Application.main(Application.java:17) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) +2022-01-17 11:50:06 jdbc[3]: exception +org.h2.jdbc.JdbcSQLFeatureNotSupportedException: Feature not supported: "Index on BLOB or CLOB column: ""EMAIL"" TEXT NOT NULL"; SQL statement: + + alter table user + add constraint user_email_unique unique (email) [50100-200] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:507) + at org.h2.message.DbException.getJdbcSQLException(DbException.java:429) + at org.h2.message.DbException.get(DbException.java:205) + at org.h2.message.DbException.get(DbException.java:181) + at org.h2.message.DbException.getUnsupportedException(DbException.java:269) + at org.h2.index.BaseIndex.checkIndexColumnTypes(BaseIndex.java:76) + at org.h2.mvstore.db.MVSecondaryIndex.(MVSecondaryIndex.java:56) + at org.h2.mvstore.db.MVTable.addIndex(MVTable.java:366) + at org.h2.command.ddl.AlterTableAddConstraint.createIndex(AlterTableAddConstraint.java:298) + at org.h2.command.ddl.AlterTableAddConstraint.tryUpdate(AlterTableAddConstraint.java:176) + at org.h2.command.ddl.AlterTableAddConstraint.update(AlterTableAddConstraint.java:78) + at org.h2.command.CommandContainer.update(CommandContainer.java:198) + at org.h2.command.Command.executeUpdate(Command.java:251) + at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:228) + at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:201) + at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) + at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) + at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlString(SchemaCreatorImpl.java:458) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.applySqlStrings(SchemaCreatorImpl.java:442) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:361) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:169) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:138) + at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:124) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:164) + at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:81) + at org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:335) + at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) + at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498) + at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) + at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) + at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) + at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) + at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:730) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:412) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:302) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290) + at de.bonndan.nivio.Application.main(Application.java:17) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) + at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.base/java.lang.reflect.Method.invoke(Method.java:568) + at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49)