2013-10-03 35 views
17

phụ thuộc của tôi là:java.util.NoSuchElementException tạo mùa xuân dữ liệu JPA đậu kho

springVersion = '3.2.4.RELEASE'

compile "org.springframework:spring-***:$springVersion" 
*** = all of them are included just in case! 
compile "org.springframework.data:spring-data-jpa:1.4.1.RELEASE" 
compile "org.hibernate.javax.persistence:hibernate-jpa-2.0-api:1.0.1.Final" 
runtime "org.hibernate:hibernate-entitymanager:4.2.6.Final" 
testCompile "org.springframework:spring-test:$springVersion" 
runtime "com.h2database:h2:1.3.173" 

Tôi có tập tin bối cảnh sau đây:

<tx:annotation-driven /> 

<jpa:repositories base-package="au.com.data3.samples.user.priv" /> 

<jdbc:embedded-database id="dataSource" type="H2"> 
</jdbc:embedded-database> 

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="packagesToScan" value="au.com.data3.samples.user.model" /> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
      <property name="showSql" value="false" /> 
      <property name="generateDdl" value="true" /> 
      <property name="database" value="H2" /> 
     </bean> 
    </property> 
    <property name="jpaProperties"> 
     <props> 
      <!--<prop key="hibernate.max_fetch_depth"></prop>--> 
      <prop key="hibernate.hbm2ddl.auto">create-drop</prop> 
      <prop key="hibernate.dialect">org.hibernate.dialect.H2Dialect</prop> 
     </props> 
    </property> 
</bean> 

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
</bean> 

Tôi có lớp Kho lưu trữ trong gói .... user.priv:

public interface D3UserRepository extends JpaRepository<D3User, Long> { 

D3User findByUsername(String username); 
    List<D3User> findByFirstName(String firstName); 
    List<D3User> findByLastName(String lastName); 
    List<D3User> findByFirstNameAndLastName(String lastName); 
} 

Tôi có một bài kiểm tra/JUnit mùa xuân đã điều sau đây trong nó mà gây ra lỗi:

@Autowired 
private D3UserService mD3UserService; 

Các stacktrace là:

Caused by: java.util.NoSuchElementException: null 
    at java.util.ArrayList$Itr.next(ArrayList.java:834) ~[na:1.7.0_40] 
    at org.springframework.data.jpa.repository.query.ParameterMetadataProvider.next(ParameterMetadataProvider.java:76) ~[spring-data-jpa-1.3.5.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryCreator$PredicateBuilder.build(JpaQueryCreator.java:242) ~[spring-data-jpa-1.3.5.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryCreator.toPredicate(JpaQueryCreator.java:144) ~[spring-data-jpa-1.3.5.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryCreator.and(JpaQueryCreator.java:96) ~[spring-data-jpa-1.3.5.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryCreator.and(JpaQueryCreator.java:44) ~[spring-data-jpa-1.3.5.RELEASE.jar:na] 
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createCriteria(AbstractQueryCreator.java:109) ~[spring-data-commons-1.5.3.RELEASE.jar:na] 
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:88) ~[spring-data-commons-1.5.3.RELEASE.jar:na] 
    at org.springframework.data.repository.query.parser.AbstractQueryCreator.createQuery(AbstractQueryCreator.java:73) ~[spring-data-commons-1.5.3.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery$QueryPreparer.<init>(PartTreeJpaQuery.java:98) ~[spring-data-jpa-1.3.5.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:60) ~[spring-data-jpa-1.3.5.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:90) ~[spring-data-jpa-1.3.5.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:162) ~[spring-data-jpa-1.3.5.RELEASE.jar:na] 
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:68) ~[spring-data-jpa-1.3.5.RELEASE.jar:na] 
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:279) ~[spring-data-commons-1.5.3.RELEASE.jar:na] 
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:147) ~[spring-data-commons-1.5.3.RELEASE.jar:na] 
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:153) ~[spring-data-commons-1.5.3.RELEASE.jar:na] 
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.getObject(RepositoryFactoryBeanSupport.java:43) ~[spring-data-commons-1.5.3.RELEASE.jar:na] 
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142) ~[spring-beans-3.2.4.RELEASE.jar:3.2.4.RELEASE] 
    ... 83 common frames omitted 

Tôi đang làm gì sai? Tôi đã thử nhiều thứ khác nhau từ các bài viết tương tự nhưng không có gì có hiệu quả.

Vui lòng trợ giúp.

Trả lời

46

Nếu nó vẫn là của một số giúp đỡ: Bạn bỏ lỡ parmeter thứ hai trong

List<D3User> findByFirstNameAndLastName(String lastName); 

Nó phải được

List<D3User> findByFirstNameAndLastName(String firstName, String lastName); 
+6

Hãy bỏ phiếu cho https://jira.spring.io/browse/ DATAJPA-863 –

Các vấn đề liên quan