当前位置: 首页 > 知识库问答 >
问题:

spring-boot hibernate关闭验证

谯和煦
2023-03-14

我遇到了与如何在Spring Boot项目中禁用Hibernate验证相同的问题,并进行了相同的操作。在application.yml中,我有:

jsf:
  PROJECT_STAGE: Development
  primefaces:
    theme: overcast
logging:
  level:
    root: debug


spring:
  datasource:
    initialize: false
    password: heslo
    username: MoneyTracker
    url: jdbc:postgresql://localhost:5432/MT-test
  jpa:
    properties:
      javax:
        persistence:
          validation:
            mode: none
    hibernate:
      ddl-auto: update

所以验证模式应该设置为none,但看起来不是。在日志中我可以看到:

2016-12-30 23:39:44.166  INFO 63192 --- [on(2)-127.0.0.1] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2016-12-30 23:39:44.215 DEBUG 63192 --- [on(2)-127.0.0.1] o.hibernate.jpa.internal.util.LogHelper  : PersistenceUnitInfo [
        name: default
        persistence provider classname: null
        classloader: ParallelWebappClassLoader
  context: ROOT
  delegate: false
----------> Parent Classloader:
java.net.URLClassLoader@6d21714c

        excludeUnlistedClasses: true
        JTA datasource: null
        Non JTA datasource: org.apache.tomcat.jdbc.pool.DataSource@6798b962{ConnectionPool[defaultAutoCommit=null; defaultReadOnly=null; defaultTransactionIsolation=-1; defaultCatalog=null; driverClassName=org.postgresql.Driver; maxAct
ive=100; maxIdle=100; minIdle=10; initialSize=10; maxWait=30000; testOnBorrow=true; testOnReturn=false; timeBetweenEvictionRunsMillis=5000; numTestsPerEvictionRun=0; minEvictableIdleTimeMillis=60000; testWhileIdle=false; testOnConnect=
false; password=********; url=jdbc:postgresql://localhost:5432/MT-test; username=MoneyTracker; validationQuery=SELECT 1; validationQueryTimeout=-1; validatorClassName=null; validationInterval=3000; accessToUnderlyingConnectionAllowed=t
rue; removeAbandoned=false; removeAbandonedTimeout=60; logAbandoned=false; connectionProperties=null; initSQL=null; jdbcInterceptors=null; jmxEnabled=true; fairQueue=true; useEquals=true; abandonWhenPercentageFull=0; maxAge=0; useLock=
false; dataSource=null; dataSourceJNDI=null; suspectTimeout=0; alternateUsernameAllowed=false; commitOnReturn=false; rollbackOnReturn=false; useDisposableConnectionFacade=true; logValidationErrors=false; propagateInterruptState=false; 
ignoreExceptionOnPreLoad=false; }
        Transaction type: RESOURCE_LOCAL
        PU root URL: file:/Users/romanrakus/Tomcats/apache-tomcat-8.5.4/webapps/ROOT/WEB-INF/lib/database-1.0-SNAPSHOT.jar
        Shared Cache Mode: UNSPECIFIED
        Validation Mode: AUTO
        Jar files URLs []
        Managed classes names [
                cz.romanrakus.moneytracker.db.entities.Person
                cz.romanrakus.moneytracker.db.entities.PersonRole
                cz.romanrakus.moneytracker.db.entities.SpendingType
                cz.romanrakus.moneytracker.db.entities.PredefinedCsvImport
                cz.romanrakus.moneytracker.db.entities.Spending]
        Mapping files names []
        Properties []
2016-12-30 23:50:01.534 DEBUG 63192 --- [on(7)-127.0.0.1] org.springframework.jndi.JndiTemplate    : Looking up JNDI object with name [java:comp/env/spring.jpa.properties.javax.persistence.validation.mode]
2016-12-30 23:50:01.534 DEBUG 63192 --- [on(7)-127.0.0.1] o.s.jndi.JndiLocatorDelegate             : Converted JNDI name [java:comp/env/spring.jpa.properties.javax.persistence.validation.mode] not found - trying original name [spring.jpa.properties.javax.persistence.validation.mode]. javax.naming.NameNotFoundException: Name [spring.jpa.properties.javax.persistence.validation.mode] is not bound in this Context. Unable to find [spring.jpa.properties.javax.persistence.validation.mode].
2016-12-30 23:50:01.534 DEBUG 63192 --- [on(7)-127.0.0.1] org.springframework.jndi.JndiTemplate    : Looking up JNDI object with name [spring.jpa.properties.javax.persistence.validation.mode]
2016-12-30 23:50:01.534 DEBUG 63192 --- [on(7)-127.0.0.1] o.s.jndi.JndiPropertySource              : JNDI lookup for name [spring.jpa.properties.javax.persistence.validation.mode] threw NamingException with message: Name [spring.jpa.properties.javax.persistence.validation.mode] is not bound in this Context. Unable to find [spring.jpa.properties.javax.persistence.validation.mode].. Returning null.
2016-12-30 23:50:01.534 DEBUG 63192 --- [on(7)-127.0.0.1] o.s.c.e.PropertySourcesPropertyResolver  : Found key 'spring.jpa.properties.javax.persistence.validation.mode' in [applicationConfigurationProperties] with type [String]

调试期间,我发现验证模式被正确地解析和设置(尽管日志中有其他内容)。但是应用程序仍然使用hibernate验证器而不是spring验证器。我还认为属性javax.persistence.validation.Factory包含对名为validator的Bean的引用。但仍然没有运气:(

我正在使用WebSecurityConfigurerAdapter,我不知道这是否重要。

共有1个答案

罗学真
2023-03-14

原来我有非常不同的问题。我不得不将validator(spring constraint validator)添加到JSF中。适合我的解决方案是stackoverflow.com/a/21279420/5788897

 类似资料:
  • 我是spring框架的新手,目前正在尝试使用hibernate和spring boot JPA连接到MySQL数据库。 有人能帮帮我吗?我因为没有提供实体管理器工厂bean而得到一个错误。 我已经创建了一个公共git存储库,其中包含我在此演示项目中的代码:https://bitbucket.org/stanhurks/demo-spring-boot-rest-api stacktrace如下所示

  • logstash的elasticsearch输出可以选择关闭SSL验证 https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-输出-elasticsearch-ssl_证书_验证 apm是否有类似的选择? Elasticsearch使用自签名证书,而apm在连接到ES时

  • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 到目前为止,我有一个具有持久性的Spring应用程序。但是现在我想将Hibernate与JPA一起使用来完成我的所有数据库活动。我想使用一个entitymana

  • 下面是我得到的audit4j:info初始化audit4j······audit4j:信息加载配置...AUDIT4J:信息验证配置...audit4j:info正在初始化处理程序...audit4j:info org.audit4j.core.handler.consoleAuditHandler已初始化。audit4j:info org.audit4j.core.handler.file.Fi

  • 我已经搜索了很多来识别spring JPA如何在打开EntityManager连接后关闭它。我已经使用@PersistenceContext将事务性EntityManager注入到我的Dao中,这意味着spring将负责为我创建和关闭EntityManager。然而,在我以前的实现中,我使用DAOs创建和关闭EntityManager,现在用spring代替了它。谁能帮我理解一下,spring是在

  • 我如何注册/添加一个自定义的关闭例程,当我的Spring Boot应用程序关闭时,该例程将被触发? 场景:我将Spring Boot应用程序部署到一个Jetty servlet容器(即,没有嵌入式Jetty)。我的应用程序使用Logback进行日志记录,并且我希望在运行时使用Logback的MBean JMX配置器更改日志记录级别。它的文档说明,为了避免内存泄漏,在关机时必须调用特定的Logger