我有与crud存储库的接口:
public interface LekarDao extends CrudRepository<Lekarfizo, Long> {
Lekarfizo findByBrojLicence(String brojLicence);
}
我有服务:
@Service
@Transactional
public class LekarDaoImpl {
@Autowired
private LekarDao lekarDao;
public Lekarfizo nadjipoIdu(String jmbg){
return lekarDao.findByBrojLicence(jmbg);
}
我的xml:
<context:annotation-config />
<context:component-scan base-package="com.dao" />
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<jpa:repositories base-package="com.dao"/>
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="ProjekatOrdPU" />
</bean>
<bean id="transactionManager"class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
我有错误:
引起:org.springframework.beans.factory.BeanCreationException:无法自动装配字段:private com.dao.LekarDao com.dao.LekarDaoImpl.lekarDao;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名为'lekarDao'的bean时出错:init方法的调用失败;嵌套异常是java.lang.NoClassDefFoundError:org / springframework / data / repository / query / QueryByExampleExecutor
我真的不知道我做错了什么。 我使用Spring 4.0.1,spring-data-jpa 1.10.1,spring-data-commons 1.10.0。
答案 0 :(得分:4)
QueryByExampleExecutor的Javadoc指出此接口已添加到v1.12的spring-data-commons中,因此看起来spring-data-jpa 1.10依赖于spring-data-commons 1.12而不是1.10有
public interface QueryByExampleExecutor允许的接口 按示例示例实例执行查询。的自: 1.12 强>
尽管您没有使用Maven,但您可以通过查看spring-data-jpa 1.10 JAR文件来确认所需的任何依赖项版本。在文件META-INF / maven / org.springframework.data / spring-data-jpa / pom.xml中。
这具有以下属性集:
<springdata.commons>1.12.1.RELEASE</springdata.commons>
除了最简单的项目之外,手动管理依赖项将变得非常困难。您应该考虑使用Maven或Gradle等构建工具。