gpt4 book ai didi

java - 使用自定义基础存储库配置 Spring @DataJpaTest

转载 作者:行者123 更新时间:2023-12-01 17:37:22 25 4
gpt4 key购买 nike

让我们假设一个自定义基础 JpaRepository实现如下。

public class SimpleCustomJpaRepository<T, ID extends Serializable> extends SimpleJpaRepository<T, ID> implements CustomJpaRepository<T, ID> {

@Override
public List<T> findAllCustom() {

...
}
}

使用@EnableJpaRepositories注释注册基础存储库。

@EnableJpaRepositories(value = "org.somebody.repository", repositoryBaseClass = SimpleCustomJpaRepository.class)

我应该如何为扩展 CustomJpaRepository 接口(interface)的 UserRepository 配置集成测试,并因此应该使用自定义基本实现?

public interface UserRepository extends CustomJpaRepository<User, Long> { ... }

当前使用的集成测试失败,并出现org.springframework.data.mapping.PropertyReferenceException: No property findAllCustom found for type User!。实际上,它无法加载 ApplicationContext,因为我的自定义基础存储库实现在集成测试期间未注册,因此未找到 findAllCustom 的实现。

@ExtendWith(SpringExtension.class)
@DataJpaTest
class UserRepositoryTest {

@Autowired
private UserRepository userRepository.
}

我应该如何结合 JPA 存储库集成测试来注册自定义 JpaRepository 实现?

最佳答案

我仍然无法解释问题的原因,但是手动配置JPA已经解决了我的问题。

@TestConfiguration
@EnableAutoConfiguration(exclude = {JpaRepositoriesAutoConfiguration.class})
@EnableJpaRepositories(value = "org.somebody.repository", repositoryBaseClass = SimpleCustomJpaRepository.class)
public class JpaTestConfig {

...
}

我刚刚在测试中导入了这个额外的配置类,它的作用就像一个魅力。

@ExtendWith(SpringExtension.class)
@DataJpaTest
@Import(JpaTestConfig.class)
class UserRepositoryTest {

@Autowired
private UserRepository userRepository.
}

关于java - 使用自定义基础存储库配置 Spring @DataJpaTest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61014009/

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