@DataJpaTest不读取spring.jpa。*属性,而@SpringBootTest读取

时间:2018-09-09 18:10:05

标签: java spring hibernate spring-boot spring-data-jpa

我正在使用Spring Boot 2.0.4.RELEASE,并将src/test/resources/application.yml配置为

spring:
  jpa:
    show-sql: false
    hibernate:
      dialect: org.hibernate.dialect.SQLServer2012Dialect
      ddl-auto: none
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
      properties:
        hibernate:
          generate_statistics: false
          show_sql: false

我有一个非常简单的测试:

@DataJpaTest
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@ExtendWith(SpringExtension.class)
public class MyTest {
  ...
}

该测试将忽略属性(在打印休眠语句时可以很容易看到)。将相同的属性放在application.properties文件中是可行的。

将名称更改为application-test.yml并运行配置文件测试也无济于事。

@DataJpaTest注释更改为@SpringBootTest时,它可以正常工作...

请务必注意,其余的属性(与我的应用程序相关且没有前缀spring.*的事物都将被正常读取和使用

我确实更喜欢使用yaml文件(例如在/src/main/resources中),而不是仅仅为纯JPA测试而不加载完整的@SpringBootTest ...我还可以为此配置其他什么工作吗?

1 个答案:

答案 0 :(得分:0)

这是缩进的问题。 properties必须向左移动一层。

spring:
  jpa:
    show-sql: false
    hibernate:
      dialect: org.hibernate.dialect.SQLServer2012Dialect
      ddl-auto: none
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    properties:
      hibernate:
        generate_statistics: false
        show_sql: false

但是如果您使用logback.xml来记录配置,也可以尝试以下方法:

<logger name="org.hibernate.stat" level="OFF"/>