【发布时间】:2020-03-02 23:32:27
【问题描述】:
我正在使用这个设置来生成一个 ddl 文件:
spring.jpa.properties.javax.persistence.schema-generation.create-source=metadata
spring.jpa.properties.javax.persistence.schema-generation.scripts.action=create
spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=./ddl/schema.sql
生成是通过 Maven 验证阶段的特定测试执行的:
@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase(replace = Replace.NONE)
@TestPropertySource(locations = "/ddl.properties")
public class GenerateDDL {
@Autowired
private EntityManager em;
@Test
public void generateDDL() throws IOException {
em.close();
em.getEntityManagerFactory().close();
}
}
这工作正常,但有一个问题:生成器不会创建新文件,而是总是附加它的东西。
有没有办法或设置让生成器始终创建新文件或清理旧文件?
在测试中删除它会在生成后删除它。我们还需要在 git 上发布文件,因此它不会在 target 中生成。
更新 Hibernate 中似乎至少没有解决方案(直到 Hibernate 6): https://hibernate.atlassian.net/browse/HHH-11817
有没有办法在创建持久性上下文之前挂钩 Spring 上下文创建?在那里我可以删除文件。
【问题讨论】:
-
启动时使用maven删除文件?
-
这将是一个糟糕的选择 - 如果从 maven 或 IDE 运行测试应该有相同的结果。但似乎没有其他选择?!
标签: jpa spring-data-jpa ddl