在Spring Data JPA应用程序中生成DDL时出现问题

时间:2019-03-01 14:17:41

标签: jpa spring-data-jpa ddl

我们有一个正在运行的Spring Boot(2.1.3)应用程序。对于本地开发,我们使用

  jpa:
     hibernate:
        ddl-auto: create-drop

现在,我们需要为db-guys生成一个ddl文件(在构建过程中更可取)。我将通过设置以下其他属性来尝试:

  javax:
    persistence:
      schema-generation:
        create-source: metadata
        action: create
        create-target: create.sql 

有了这些设置(ddl-auto更改为none),我启动了我的应用程序。虽然启动正常,但找不到“ create.ddl”。

因为我希望在构建过程中生成ddl文件,所以我添加了一个测试:

@RunWith(SpringRunner.class)
@DataJpaTest
@TestPropertySource(locations = "classpath:/testproperties/ddlgenerate.yml")
@AutoConfigureTestDatabase(replace = Replace.NONE)
public class GenerateDDL {

    @Autowired
    private EntityManager em;

    @Test
    public void generateDDL(){
        em.close();
        em.getEntityManagerFactory().close();
    }

}

我在某处读到应该在实例化EntityManager期间生成ddl? 引用的classpath:/testproperties/ddlgenerate.yml仅包含

spring:
  jpa:
    properties:
      javax:
        persistence:
          schema-generation:
            create-source: metadata
            action: create
            create-target: create.sql

Log表示已加载属性。测试为绿色,但仍然没有ddl文件。

那么如何生成ddl文件(在构建过程中最好)?

1 个答案:

答案 0 :(得分:0)

问题是@TestPropertySource不支持yaml文件作为源。 yaml转换为属性文件后,一切都会正常工作。