Announcement Announcement Module
Collapse
No announcement yet.
Configuration problem: org.springframework.data.jpa.repository.config.Jpa Repositories Page Title Module
Move Remove Collapse
X
Conversation Detail Module
Collapse
  • Filter
  • Time
  • Show
Clear All
new posts

  • Configuration problem: org.springframework.data.jpa.repository.config.Jpa Repositories

    I am building a simple web application using:
    • Eclipse
    • Spring webmvc
    • Spring data
    • Hibernate

    So far I have successfully created a very simple webapp capable of presenting a list of things to do. The list is retrieved from a simple service and all is wired together using annotations.

    Now - I would like to have my simple service actually fetch the things to do from a database.

    Using Spring data I have been able to build entity, repository and configuration classes and I can use them to fetch data from the database and print it out to the console. But only when run stand-alone.

    As soon as my config class is visible to <context:component-scan> I get an error from my embedded TomCat:

    Configuration problem: org.springframework.data.jpa.repository.config.Jpa RepositoriesRegistrar was @Import'ed but is not annotated with @Configuration nor does it declare any @Bean methods. Update the class to meet one of these requirements or do not attempt to @Import it.
    I have nailed the problem down to the @EnableJpaRepositories in the config class. The definition of this annotation includes @Import(value={JpaRepositoriesRegistrar.class}):

    Code:
    package myproj.configs;
    
    import javax.persistence.EntityManagerFactory;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Import;
    import org.springframework.dao.support.PersistenceExceptionTranslator;
    import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
    import org.springframework.data.jpa.repository.support.JpaRepositoryFactory;
    import org.springframework.data.repository.core.support.RepositoryFactorySupport;
    import org.springframework.orm.hibernate3.HibernateExceptionTranslator;
    import org.springframework.orm.jpa.JpaTransactionManager;
    import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
    import org.springframework.orm.jpa.vendor.HibernateJpaDialect;
    import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    
    @Configuration
    @Import(MyDataSource.class)
    @EnableTransactionManagement
    @EnableJpaRepositories("myproj")
    public class MyConfig {
        
        @Bean
        public EntityManagerFactory entityManagerFactory() {
    
            HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
            vendorAdapter.setGenerateDdl(false);
    
            LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean();
            factory.setJpaVendorAdapter(vendorAdapter);
            factory.setPackagesToScan(new String[] {"myproj"});
            factory.setDataSource(MyDataSource.myDataSource());
            factory.afterPropertiesSet();
    
            return factory.getObject();
        }
        ...
    I have been searching the web for similar problems for the last two days without success.

    Can anyone help?

    Please let me know if I need to supply additional information or source code.

    Code:
    INFO: Initializing Spring FrameworkServlet 'MyWebApp'
    Jan 16, 2013 2:03:14 PM org.apache.catalina.core.ApplicationContext log
    SEVERE: StandardWrapper.Throwable
    org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: org.springframework.data.jpa.repository.config.JpaRepositoriesRegistrar was @Import'ed but is not annotated with @Configuration nor does it declare any @Bean methods. Update the class to meet one of these requirements or do not attempt to @Import it.
    Offending resource: class path resource [org/springframework/data/jpa/repository/config/JpaRepositoriesRegistrar.class]
    	at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
    	at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.doLoadBeanDefinitionForConfigurationClassIfNecessary(ConfigurationClassBeanDefinitionReader.java:145)
    	at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:114)
    	at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:105)
    	at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:264)
    	at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigurationClasses(ConfigurationClassPostProcessor.java:199)
    	at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:175)
    	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:617)
    	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:446)
    	at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:609)
    	at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:571)
    	at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:623)
    	at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:491)
    	at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:432)
    	at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)
    	at javax.servlet.GenericServlet.init(GenericServlet.java:160)
    	at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1266)
    	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1185)
    	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1080)
    	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5026)
    	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5313)
    	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    	at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3919)
    	at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:426)
    	at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1364)
    	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1566)
    	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1576)
    	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1576)
    	at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1555)
    	at java.lang.Thread.run(Thread.java:722)
    Last edited by Jenseman; Jan 16th, 2013, 03:28 PM.

  • #3
    Hi Gordon,

    I do use JUnit but I havent implemented any tests yet.

    I dont really execute as such. The presence of the @EnableJpaRepositories immediatly breaks the automatic republishing of my servlet to Tomcat. The stackdump is from the Tomcat console output.

    I will revert when I have tried out your congiguration. Thanks:-)

    Best regards
    Jens Krogsboell

    Comment


    • #5
      Hi Gordon,

      Its no problem - I found it - it didn't solve my problem though.

      But yesterday afternoon a colleague of mine came to my rescue helping me sort out my dependencies. It turned out to be related to me trying to run spring-data 1.2.0 with spring-other-stuff 3.1.0.

      I have upgraded my project to spring 3.2.0.RELEASE and the problem has gone. Unfortunately I haven't been able to reproduce it afterwards, so I cant say exactly how it came about.

      But anyways - a YALVMI (Yet Another Library Version Mismatch Issue).

      Thanks a lot for you effort.

      Br
      Jens

      Comment

      Working...
      X