Tôi đang cố gắng tự động lưu trữ trong bộ điều khiển bằng cách sử dụng chú thích mùa xuân. Tôi nhận được lỗi org.springframework.data.repository.query.QueryByExampleExecutor class not found
mà tôi không thể tìm thấy giải pháp.Tôi không thể tự động lưu trữ vào mùa xuân
Lỗi mà tôi nhận được:
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'articleController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.payforeign.article.ArticleRepository com.payforeign.article.ArticleController.repository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'articleRepository': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/data/repository/query/QueryByExampleExecutor
khiển
package com.payforeign.article;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/service")
public class ArticleController {
@Autowired
private ArticleRepository repository;
//controller methods
}
Repository
tôi đã chú thích kho với @Repository
. Theo tài liệu mùa xuân, tôi chỉ có giao diện kho lưu trữ. Nó có đúng không?
package com.payforeign.article;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface ArticleRepository extends CrudRepository<Article, Long> {}
applicationContext.xml
Tôi đã bao gồm jpa:repositories
với đúng base-package
và component-scan
. Tôi đã xác định rằng nó được điều khiển chú thích (<mvc:annotation-driven /> <tx:annotation-driven />
) và thêm cài đặt JDBC và JPA. applicationContext.xml tôi được nạp một cách chính xác từ web.xml
<?xml version='1.0' encoding='UTF-8' ?>
<beans ...>
<context:component-scan base-package="com.payforeign,com.payforeign.article" />
<mvc:annotation-driven />
<jpa:repositories base-package="com.payforeign.article" />
<!-- Data Source -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" >
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/payforeign" />
<property name="username" value="root" />
<property name="password" value="" />
</bean>
<!-- Hibernate -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="com.payforeign.article" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="generateDdl" value="true" />
<property name="database" value="MYSQL" />
</bean>
</property>
</bean>
<!-- enable the configuration of transactional behavior based on annotations -->
<tx:annotation-driven />
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
</beans>
Dấu vết ngăn xếp rõ ràng: Bạn đang thiếu các JAR dữ liệu mùa xuân từ CLASSPATH của bạn. – duffymo
'NoClassDefFoundError' gần như luôn luôn có nghĩa là một phiên bản không khớp. Trong trường hợp này, tôi tin rằng bạn cần các phiên bản RC (hoặc ít nhất là phiên bản phát hành mới nhất) để có được truy vấn theo ví dụ. – chrylis
Tôi đã nâng cấp 'spring-data-commons' từ phiên bản 1.11.4 lên 1.12.1 và nó đã khắc phục sự cố. Thanks @chrylis – Black