Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用SpringFramework时EntityManager始终为空_Java_Spring_Entitymanager - Fatal编程技术网

Java 使用SpringFramework时EntityManager始终为空

Java 使用SpringFramework时EntityManager始终为空,java,spring,entitymanager,Java,Spring,Entitymanager,你好 我目前正在从事一个Maven+Spring+Hibernate项目。实际上,这只是一个测试项目,只是为了熟悉Spring如何使用Hibernate(+Maven)。我已经设置并准备了必要的依赖项。i、 e.Spring的appcontext.xml,Hibernate的persistence.xml,JPA/persistence/Hibernate的实体和DAO对象 在调试期间,可以观察到EntityManager总是null。我不知道是什么原因造成的,因为我做了ff: 在我的控制器上自

你好

我目前正在从事一个Maven+Spring+Hibernate项目。实际上,这只是一个测试项目,只是为了熟悉Spring如何使用Hibernate(+Maven)。我已经设置并准备了必要的依赖项。i、 e.Spring的
appcontext.xml
,Hibernate的
persistence.xml
,JPA/persistence/Hibernate的实体和DAO对象

在调试期间,可以观察到
EntityManager
总是
null
。我不知道是什么原因造成的,因为我做了ff:

  • 在我的控制器上自动连线
  • 在我的
    applicationContext.xml
  • 将我的DAO对象注释为
    @Repository
  • entityManagerFactory
    transactionManager
    vendorAdapter
    定义为my
    applicationContext.xml
  • 我一整天都在调试和尝试解决方法。不幸的是,我还没有解决这个问题。希望有人能对这个问题有所帮助

    以下是我的项目的代码和配置:

    ---实体---


    再次,希望有人能对此提供反馈。提前谢谢

    你甚至还没有开始春天

    Sample s = new Sample();
    
    Sample
    是一个Springbean。您必须首先启动应用程序上下文并从那里获取bean。见@nico_ekito的答案:

    public static void main(String[] args) {
        ApplicationContext context =
             new ClassPathXmlApplicationContext("classpath:/applicationContext.xml");
        Sample s = context.getBean(Sample.class);
        s.persist();
    }
    
    启动上下文后(可能会导致一些错误),请更正以下内容:

    • 删除此项:

      tinfoh = new TblFileinfoHome();
      
      用以下内容注释字段:

      @Autowired
      private TblFileinfoHome tinfoh;
      
    • 您不应该是自动关联实体类:

      @Autowired                //remove this annotation
      private TblFileinfo tinfo;
      

      • 你甚至还没有开始春天

        Sample s = new Sample();
        
        Sample
        是一个Springbean。您必须首先启动应用程序上下文并从那里获取bean。见@nico_ekito的答案:

        public static void main(String[] args) {
            ApplicationContext context =
                 new ClassPathXmlApplicationContext("classpath:/applicationContext.xml");
            Sample s = context.getBean(Sample.class);
            s.persist();
        }
        
        启动上下文后(可能会导致一些错误),请更正以下内容:

        • 删除此项:

          tinfoh = new TblFileinfoHome();
          
          用以下内容注释字段:

          @Autowired
          private TblFileinfoHome tinfoh;
          
        • 您不应该是自动关联实体类:

          @Autowired                //remove this annotation
          private TblFileinfo tinfo;
          

        您不在主类中加载Spring上下文:

        public class MavenSpringHibernate {
        
            /**
             * @param args
             */
        
            public static void main(String[] args) {
        
                ApplicationContext context =
                        new ClassPathXmlApplicationContext(new String[] {"classpath:/PATH/TO/applicationContext.xml"});
        
                Sample s = context.getBean(Sample.class);
                s.persist();
            }
        }
        

        您不在主类中加载Spring上下文:

        public class MavenSpringHibernate {
        
            /**
             * @param args
             */
        
            public static void main(String[] args) {
        
                ApplicationContext context =
                        new ClassPathXmlApplicationContext(new String[] {"classpath:/PATH/TO/applicationContext.xml"});
        
                Sample s = context.getBean(Sample.class);
                s.persist();
            }
        }
        

        +1,我一直专注于自动布线问题,甚至没有意识到Spring应用程序上下文根本没有启动:-)。+1,我一直专注于自动布线问题,甚至没有意识到Spring应用程序上下文根本没有启动:-)。谢谢。但是,“Sample s=context.getBean(Sample.class);”是不允许的。。。我是说我正在吃一些errors@jaysonpryde:什么错误?您使用的是哪个版本的Spring和Java?编译错误或运行时异常?@Tomasz-鉴于我没有在applicationContext.xml中将示例类声明为bean,我想我不能这样做。。。错误是“BeanFactory类型中的getBean(String)方法不适用于参数(类)”,我遵循了ApplicationContext和Autowiring中的建议。但是,我在这行“ApplicationContext context=new ClassPathXmlApplicationContext(“classpath:/ApplicationContext.xml”);“异常是-exception in thread”main“org.springframework.beans.factory.BeanCreationException:创建名为“tblFileinfoHome”的bean时出错:持久性字段的注入失败;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建在类路径资源[applicationContext.xml]中定义的名为“entityManagerFactory”的bean时出错:调用init方法失败;嵌套的异常是java.lang.AbstractMethodError:org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;谢谢你。但是,“Sample s=context.getBean(Sample.class);”是不允许的。。。我是说我正在吃一些errors@jaysonpryde:什么错误?您使用的是哪个版本的Spring和Java?编译错误或运行时异常?@Tomasz-鉴于我没有在applicationContext.xml中将示例类声明为bean,我想我不能这样做。。。错误是“BeanFactory类型中的getBean(String)方法不适用于参数(类)”,我遵循了ApplicationContext和Autowiring中的建议。但是,我在这行“ApplicationContext context=new ClassPathXmlApplicationContext(“classpath:/ApplicationContext.xml”);“异常是-exception in thread”main“org.springframework.beans.factory.BeanCreationException:创建名为“tblFileinfoHome”的bean时出错:持久性字段的注入失败;嵌套异常为org.springframework.beans.factory.BeanCreationException:创建在类路径资源[applicationContext.xml]中定义的名为“entityManagerFactory”的bean时出错:调用init方法失败;嵌套的异常是java.lang.AbstractMethodError:org.springframework.orm.jpa.persistenceunit.SpringPersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;