我想测试弹簧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 / resources中的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
答案 0 :(得分:0)
Spring无法加载PersonRepository,因为findByCodeAndName
查询方法中缺少参数,请将其更改为:
@Repository
public interface PersonRepository extends JpaRepository<Person, AtomicInteger> {
...
Person findByCodeAndName(String code, String name);
...
}