如何在 Quarkus 测试中清除可嵌入类型的数据库表

时间:2021-07-01 14:49:17

标签: java hibernate jpa quarkus quarkus-panache

我需要在 Quarkus 应用程序中清除我的数据库表。我可以通过调用 PanacheEntity 为扩展 PanacheEntityBaseentity.deleteAll() 的实体实现这一点。如何清除可嵌入类型的表格?

2 个答案:

答案 0 :(得分:0)

一种可能的解决方案是使用带有 Flyway 的 JUnit 5 扩展来管理您的架构,并在每次测试时重置数据库的状态

您可以在此处找到扩展程序:https://github.com/radcortez/flyway-junit5-extensions/

这里的 Quarkus 示例:https://github.com/radcortez/flyway-junit5-extensions/tree/master/examples/quarkus

答案 1 :(得分:0)

所以我能够自己解决问题,这就是我所做的:

  1. 注入 EntityManager 实例
  2. 在清理方法(在我的例子中是tearDown())中,我编写并执行了一个本地查询来清除我的表“course_description”。 注意:我有一个实体 Course 和一个可嵌入的 CourseDescriptionCourseDescription 嵌入在 Course 中 示例:
@Embedded
@ElementCollection
public List<CourseDescription> courseDescriptions;

我的测试班:

    @PersistenceContext
    EntityManager entityManager;

...

    @AfterEach
    @Transactional
    public void tearDown(){
        Query query = entityManager.createNativeQuery("DELETE FROM course_description")
                .setHint(COMMENT, "Custom cleanup for embeddable type CourseDescription");
        query.executeUpdate();
        Course.deleteAll();
    }