【问题标题】:Spring Roo 2.0.RC1: use Mysql DB with springlets authentificationSpring Roo 2.0.RC1:使用带有 springlets 身份验证的 Mysql DB
【发布时间】:2017-03-28 08:03:16
【问题描述】:

什么时候使用 Spring Roo 和 mysql 并使用

security setup --provider SPRINGLETS_JPA

当我现在启动应用程序时,我得到错误 Stacktrace

2017-03-28 10:00:57.695  WARN 7544 --- [  restartedMain] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
2017-03-28 10:00:57.695  INFO 7544 --- [  restartedMain] o.apache.catalina.core.StandardService   : Stopping service Tomcat
2017-03-28 10:00:57.711  WARN 7544 --- [  restartedMain] o.s.boot.SpringApplication               : Error handling failed (Error creating bean with name 'delegatingApplicationListener' defined in class path resource [org/springframework/security/config/annotation/web/configuration/WebSecurityConfiguration.class]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'metaDataSourceAdvisor': Cannot resolve reference to bean 'methodSecurityMetadataSource' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.security.config.annotation.method.configuration.GlobalMethodSecurityConfiguration': Initialization of bean failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.springframework.context.annotation.ConfigurationClassPostProcessor.importRegistry' is defined)
2017-03-28 10:00:57.711 ERROR 7544 --- [  restartedMain] o.s.boot.SpringApplication               : Application startup failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1583) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1076) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:851) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541) ~[spring-context-4.3.3.RELEASE.jar:4.3.3.RELEASE]
        at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.1.RELEASE.jar:1.4.1.RELEASE]
        at de.quintra.webapps.rechnungspruefung.RechnungspruefungApplication.main(RechnungspruefungApplication.java:21) [classes/:na]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_121]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_121]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_121]
        at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:49) [spring-boot-devtools-1.4.1.RELEASE.jar:1.4.1.RELEASE]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory
Caused by: org.hibernate.MappingException: org.hibernate.dialect.MySQL5Dialect does not support pooled sequences

有什么问题。 我必须添加什么来解决这个问题?

【问题讨论】:

  • 我想在安装 Spring Security 之前一切正常,对吧?

标签: mysql spring-roo


【解决方案1】:

当您包含 SPRINGLETS_JPA 安全类型时,新的 Spring Boot 自动配置将包含在您的项目中。此外,一个名为 UserLogin 的新实体正在您的上下文中注册。

查看您的错误日志org.hibernate.dialect.MySQL5Dialect does not support pooled sequences 后,我检查了UserLogin 实体,发现@Id 字段包含以下注释,用于配置如何生成id 值。

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "userLoginGen")

如您所见,它使用的是 GenerationType SEQUENCE,但 MySQL 数据库不支持这种类型。

查看这篇帖子https://dzone.com/articles/hibernate-identity-sequence

我刚刚在 Springlets 项目中创建了以下问题来解决这个问题。

https://github.com/DISID/springlets/issues/53

希望对你有帮助,

【讨论】:

  • 您好,谢谢您的回答。然后我现在不能在 MySql 中使用 SPRINGLETS_JPA。
【解决方案2】:

您是否在application.properties 中使用spring.jpa.hibernate.ddl-auto 属性?

我遇到了同样的问题,为了解决这个问题,我在第一次构建/运行时保留了该属性,当在数据库中创建表时,我删除了 ddl-auto 属性并且这个错误消失了......

我还没有实现用户注册功能,我不确定,如果我尝试插入一个新用户,这个错误会再次出现!!

告诉我,进展如何?

【讨论】:

    猜你喜欢
    • 2018-02-04
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 2011-02-13
    • 2013-03-06
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    相关资源
    最近更新 更多