Pat*_*ick 5 junit jpa h2 flyway spring-boot
尝试在也使用 Flyway 的 Spring Boot 测试中使用 @DataJpaTest 注释时,我注意到了一个奇怪的行为。
给定以下实体类:
@Entity
public class MyEntity {
  @Id
  private String columnA;
  private String columnB;
  public String getColumnA() {
      return columnA;
  }
  public void setColumnA(String columnA) {
      this.columnA = columnA;
  }
  public String getColumnB() {
      return columnB;
  }
  public void setColumnB(String columnB) {
      this.columnB = columnB;
  }
}
以下 Spring 存储库:
@Repository
public interface MyEntityRepository extends JpaRepository<MyEntity, String> {
}
以下测试:
@RunWith(SpringRunner.class)
@DataJpaTest
public class JpaTestApplicationTests {
  @Autowired
  MyEntityRepository myEntityRepository;
  @Test
  public void canSaveAndFetch() {
      MyEntity myEntity = new MyEntity();
      myEntity.setColumnA("a");
      myEntity.setColumnB("b");
      myEntityRepository.save(myEntity);
      Optional<MyEntity> myEntityOptional = myEntityRepository.findById("a");
      Assert.assertTrue(myEntityOptional.isPresent());
  }
}
由于 auto-ddl 已打开且 H2 正在创建表,因此测试本身可以正常工作。
但是,如果我想定义自己的架构,那么我将 Flyway 添加到 POM 并创建迁移,例如在 resources/db/migration/V1__Schema.sql 中:
CREATE TABLE my_entity (
  column_a VARCHAR NOT NULL PRIMARY KEY,
  column_b VARCHAR
);
现在相同的测试将失败,因为 JPA 不再使用默认的 SpringPhysicalNamingStrategy。
引起:org.h2.jdbc.JdbcSQLException:未找到列“MYENTITY0_.COLUMNA”
通过设置,这似乎是一个简单的修复
spring.jpa.hibernate.naming.physical-strategy = org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
但是,无论我是将它放在 application.properties 中,还是放在 @TestPropertySource 中,或者创建一个 PhysicalNamingStrategy bean……都不会影响行为。如何在此测试上下文中告诉 JPA 我想使用将“columnA”映射到“column_a”的 SpringPhysicalNamingStrategy?
小智 0
我遇到了类似的问题 - 该属性 ( spring.jpa.hibernate.naming.physical-strategy) 被忽略(与其他spring.jpa.hibernate属性一起)。这是由扩展并覆盖了class 中的org.springframework.boot.autoconfigure.orm.jpa.JpaBaseConfiguration方法的类引起的。删除该类(毕竟没有必要)解决了问题并允许该类应用配置文件中的所有属性。protected Map<String, Object> getVendorProperties()org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfigurationHibernateJpaConfiguration
| 归档时间: | 
 | 
| 查看次数: | 348 次 | 
| 最近记录: |