jpa + spring+test, класс репозитория не может быть найден

я хочу, чтобы проверить весной jpa, но получить
Неудовлетворенная зависимость, выраженная через поле ‘personRepository’;

@Entity
public class Person {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private String code;
    private int flag;
    private String source;
    //getters and setters ...
}


@Repository
public interface PersonRepository extends JpaRepository<Person, AtomicInteger> {
    Person findByName(String name);
    Person findByCodeAndName();
    @Query("from Person p where p.name = :name")
    Person findUser(@Param("name") String name);
}

и мой ConfigClass: нужно ли мне костюмировать @EnableJpaRepositories?

    @EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true)
@EnableJpaRepositories(
        basePackages = {"learn.jpaRepository"},
        basePackageClasses = {PersonRepository.class})
@EntityScan(basePackages = "learn.model")
@ComponentScan(basePackages = "learn")
@SpringBootApplication
public class LearnConfig {
}

мое приложение.свойства в main / ресурсы

    spring.datasource.url = jdbc:mysql://localhost:3306/learnspring
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.jpa.database = MYSQL
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

и мой тестовый класс: каждый класс этот тест нужен в pom.XML

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = LearnConfig.class)
public class Main {

    @Autowired
    PersonRepository personRepository;

    @Test
    public void testFunctionConfig() {
        Person p = personRepository.findByName("clz");
        System.out.println(p.getName());
    }
}

я просто получаю ошибку ниже:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personRepository': Invocation of init method failed; nested exception is java.util.NoSuchElementException

1 ответ

  1. Spring не может загрузить PersonRepository, поскольку в методе findByCodeAndNameзапроса отсутствуют параметры, измените его на:

    @Repository
    public interface PersonRepository extends JpaRepository<Person, AtomicInteger> {
        ...
        Person findByCodeAndName(String code, String name);
        ...
    }