在spring data jpa应用程序中生成ddl的问题

问题描述 投票:0回答:1

我们有一个有效的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更改为无),我启动了我的应用程序。虽然它开始很好,但没有找到“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文件(最好在构建期间)?

jpa spring-data-jpa ddl
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.