我们有一个有效的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文件(最好在构建期间)?
问题是@TestPropertySource
不支持yaml文件作为源。一旦yaml转换为属性文件,所有工作都正常。