gpt4 book ai didi

spring - 在测试文件夹Spring中定义一个JPA Repository

转载 作者:行者123 更新时间:2023-12-04 14:14:46 29 4
gpt4 key购买 nike

我正在创建一个 Spring 库并对其进行测试,我需要具有仅为测试文件夹定义的实体和存储库

当我创建一个存储库时,它运行良好,但是一旦我向它添加自定义查询,我就会遇到错误:

Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List package.ExampleRepository.getAll()! No property getAll found for type Example!

这是我的测试文件夹的结构:

test
package
Application (@SpringBootApplication)
Example (@Entity)
ExampleRepository (@Repository)
Test (@SpringBootTest)

这里是存储库的内容:

@Repository
public interface ExampleRepository extends JpaRepository<Example, Long> {
List<Example> getAll();
}

谢谢你的帮助

最佳答案

来自 Spring Data JPA - Reference Documentation: Query Creation文档:

The query builder mechanism built into Spring Data repository infrastructure is useful for building constraining queries over entities of the repository. The mechanism strips the prefixes find…By, read…By, query…By, count…By, and get…By from the method and starts parsing the rest of it.

getAll() 不适合这个命名方案。 countAll() 也不是。那么您可能会问为什么 findAll() 有效,甚至 getOne(ID) 就此而言。 findAll()getOne(ID)( 和其他类似 existsById(ID)deleteAll()) 方法在 CrudRepository 中定义,并且可能由额外的查询解析器实现解决。

public interface ExampleRepository extends JpaRepository<Example, Long> {

// valid (resolvable)
List<Example> findAll();

//invalid (un-resolvable)
List<Example> getAll();

// valid
Example getOne(Long id);

// valid
List<Example> getByName(String name);

// invalid
long countAll();

//valid
long countByName(String name);
}

关于spring - 在测试文件夹Spring中定义一个JPA Repository,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61486357/

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