gpt4 book ai didi

spring-boot - @DataJpaTest 如何指定要扫描的存储库和实体

转载 作者:行者123 更新时间:2023-12-03 21:19:41 28 4
gpt4 key购买 nike

默认 @DataJpaTest扫描所有 jpa 存储库和 @Entity .就我而言,我有 5 个存储库包和 5 个实体包。例如
com.acme.product.entity与....关联com.acme.product.repositorycom.acme.users.entity与....关联com.acme.users.repositorycom.acme.client.entity与....关联com.acme.client.repository
等等....

我想在一个单独的类中测试每个部分。例如。

@RunWith(SpringRunner.class)
@DataJpaTest
//Some configurations to import only product repositories and product entities
public class TestProductRepository {
@Autowired
TestEntityManager entityManager;
}

请注意,我配置了 5 个不同的 EntityManager我想导入它们并使用例如 productEntityManagerTestProductRepository而不是默认 TestEntityManager加载所有存储库/实体。

非常感谢

最佳答案

这就是我设法实现我想要的:

@ActiveProfiles( "dev" )
@RunWith( SpringRunner.class )
@DataJpaTest
// Exclude the default test database + the default EntityManager in purpose to use my configurations instead.
@AutoConfigureTestDatabase( connection = H2, replace = AutoConfigureTestDatabase.Replace.AUTO_CONFIGURED )
@Import( {
ProductDataBaseConfig.class,//Import ProductEntityManager and other beans related to DB operations like TransactionManager, etc...
ProductRepositoryContainer.class //Custom bean containing all product repositories
} )
public class TestProductRepository {
@Autowired
private TestEntityManager entityManager;

}

这里重要的是 @AutoConfigureTestDatabase(...)@Import(...) ,因为我替换了自动配置的 bean 并导入了我自己的 ProductEntityManager TestEntityManager使用提供的配置。
这也缩小了 @DataJpaTest的范围它不会扫描类路径中的所有实体和存储库,这就是我想要的。

关于spring-boot - @DataJpaTest 如何指定要扫描的存储库和实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52258838/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com