2017-01-14 3 views
0

Я хочу проверить весну jpa, но получить Неудовлетворенная зависимость, выраженная через поле «personRepository»;jpa + весна + тест, хранилище Класс не может быть найден

@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 { 
} 

мои application.properties в основных/ресурсов

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

'findByCodeAndName' два параметра, но никто из них не был поставлен на него. – manish

ответ

0

Весна не может загрузить PersonRepository, потому что есть недостающие параметры в findByCodeAndName методе запроса, изменить его на:

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

Нет, он не работает, даже я удаляю метод. – changlizhi

+0

На самом деле, я не знаю, что я сделал, я много раз пробовал сегодня днем, это сработало! Спасибо за ваш ответ, этот метод также является моей ошибкой – changlizhi

Смежные вопросы