弹簧数据的JPA问题

问题描述:

大家好第一个原谅我的英语不好, 我使用Spring框架和配置有注释,但存在一个错误弹簧数据的JPA问题

这是我WebAppInitializer类我使用的DispatcherServlet

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

@Override 
protected Class<?>[] getRootConfigClasses() { 
    return new Class<?>[] {RootConfig.class}; 
} 

//Cofiguración especifica de clases 
@Override 
protected Class<?>[] getServletConfigClasses() { 
    return new Class<?>[] {WebConfig.class}; 
} 

/** 
* Mapeo de DispatcherSerbvlet 
* @return 
*/ 
@Override 
protected String[] getServletMappings() { 
    return new String[]{"/"}; 
} 
} 

这Rootconfig类扫描弹簧部

@Configuration 
@ComponentScan(basePackages = {"com.factory.soft.web"}, 
      excludeFilters = { 
      @Filter(type=FilterType.ANNOTATION,value=EnableWebMvc.class)}) 
public class RootConfig {} 

而最后一堂课WebConfig

@Configuration 
@EnableWebMvc //Habilita SpringMVC 

@ComponentScan("com.factory.soft") 
public class WebConfig extends WebMvcConfigurerAdapter{ 
/** 
* El resolvedor de vistas de jsp 
* @return 
*/ 
@Bean 
public ViewResolver viewResolver(){ 
    InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
    resolver.setPrefix("/WEB-INF/views/"); 
    resolver.setSuffix(".jsp"); 
    resolver.setExposeContextBeansAsAttributes(true); 
    resolver.setViewClass(org.springframework.web.servlet.view.JstlView.class); 
    return resolver; 
} 
@Bean 
public PersistenceAnnotationBeanPostProcessor paPostProcessor() { 
    return new PersistenceAnnotationBeanPostProcessor(); 
} 
/** 
* Configure Static contentc handling 
* @param configurer 
*/ 
@Override 
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
    configurer.enable(); 
}} 

的JPA coniguration

@Configuration 
@EnableJpaRepositories(basePackages="com.factory.soft.repository") 
public class JPAConfig { 

@Bean 
public DataSource dataSource(){ 
    DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
    dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 
    dataSource.setUrl("jdbc:mysql://localhost:3306/db"); 
    dataSource.setUsername("user"); 
    dataSource.setPassword("password"); 
    return null; 
} 

@Bean 
public PersistenceExceptionTranslationPostProcessor exceptionTranslation(){ 
    return new PersistenceExceptionTranslationPostProcessor(); 
} 

@Bean 
public LocalContainerEntityManagerFactoryBean entityManagerFactory(){ 
    LocalContainerEntityManagerFactoryBean emfb = new LocalContainerEntityManagerFactoryBean(); 
    emfb.setDataSource(dataSource()); 
    emfb.setPersistenceUnitName("SOFTPU"); 
    JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); 
    emfb.setJpaVendorAdapter(vendorAdapter); 
    emfb.setJpaProperties(additionalProperties()); 
    emfb.setPackagesToScan("com.factory.soft.domain"); 
    return emfb; 
} 

@Bean 
public PlatformTransactionManager transactionManager(EntityManagerFactory emf){ 
    JpaTransactionManager transactionManager = new JpaTransactionManager(); 
    transactionManager.setEntityManagerFactory(emf); 
    return transactionManager; 
} 

Properties additionalProperties() { 
    Properties properties = new Properties(); 
    properties.setProperty("hibernate.hbm2ddl.auto", "create-drop"); 
    properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect"); 
    return properties; 
} 

@Bean 
public HibernateJpaVendorAdapter jpaVendorAdapter() { 
    HibernateJpaVendorAdapter adapter = new HibernateJpaVendorAdapter(); 
    adapter.setDatabase(Database.MYSQL); 
    adapter.setShowSql(true); 
    adapter.setGenerateDdl(true); 
    return adapter; 
}} 

这是在NetBeans错误跟踪

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'exceptionTranslation' defined in class path resource [com/factory/soft/data/JPAConfig.class]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:198) 
at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:220) 
at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:618) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:467) 
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:658) 
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:530) 
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484) 
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136) 
at javax.servlet.GenericServlet.init(GenericServlet.java:158) 
at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1241) 
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:847) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1085) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) 
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) 
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1556) 
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1513) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NoClassDefFoundError: org/aopalliance/aop/Advice 
at org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory(PersistenceExceptionTranslationPostProcessor.java:85) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1572) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1540) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
... 32 more 
Caused by: java.lang.ClassNotFoundException: org.aopalliance.aop.Advice 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1295) 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1147) 
... 36 more 
+0

你可以发布你的'pom.xml'吗? – Saravana

它看起来像您需要以下JAR(java.lang.ClassNotFoundException: org.aopalliance.aop.Advice)的:

aopalliance-1.0.jar

请从http://aopalliance.sourceforge.net/下载上述Jar,并将其添加到您的Web应用程序的lib文件夹中。另外,您可以添加以下依赖于你的pom.xml如果您正在使用maven

<dependency> 
    <groupId>aopalliance</groupId> 
    <artifactId>aopalliance</artifactId> 
    <version>1.0</version> 
</dependency> 

两个问题,

1.增加AOP相关的依赖性在POM

2.You're返回dataSourcenullJPAConfig

@Bean 
public DataSource dataSource(){ 
    DriverManagerDataSource dataSource = new DriverManagerDataSource(); 
    dataSource.setDriverClassName("com.mysql.jdbc.Driver"); 
    dataSource.setUrl("jdbc:mysql://localhost:3306/db"); 
    dataSource.setUsername("user"); 
    dataSource.setPassword("password"); 
    return null; 
} 

将返回值更改为dataSource

+0

谢谢我添加AOP并返回数据源,但现在出现其他错误org.springframework.beans.factory.BeanDefinitionStoreException:无法读取候选组件类:file [C:\ U \ U \ Documents \ soft \ build \ web \ WEB -INF \类\ COM \工厂\软\数据\ JPAConfig.class];嵌套的异常是java.lang.NoClassDefFoundError:org/springframework/data/repository/query/QueryLookupStrategy $ Key – CCastro

+0

请发表您的'pom.xml'? – Saravana