【问题标题】:Spring MVC - Failure Creating a SessionFactory Bean (Invocation of init method failed) [java.lang.AbstractMethodError]Spring MVC - 创建 SessionFactory Bean 失败(调用 init 方法失败)[java.lang.AbstractMethodError]
【发布时间】:2021-02-26 16:15:55
【问题描述】:

在创建一个简单的 Spring MVC 应用程序时,我遇到了 AbstractMethodError,运行以下版本:

休眠 - 5.4.2.Final 春天 - 5.1.6.RELEASE Java - 11.0.9

我认为问题在于我在存储库、服务和应用程序上下文之间的连接方式。

org.springframework.beans.factory.BeanCreationException:在类路径资源 [com/MyCVOnline/configuration/HibernateConfiguration.class] 中定义名称为“sessionFactory”的 bean 创建错误:调用 init 方法失败;嵌套异常是 java.lang.AbstractMethodError

整个代码在我的 GitHub 中 https://github.com/Diego-Oviedo/JobBoardWithSpring

我们将不胜感激任何形式的帮助

【问题讨论】:

    标签: java spring hibernate spring-mvc


    【解决方案1】:

    很难猜测您的日志中的错误。请求您更新完整的日志报告,以便我们以适当的方式回答。

    我在您的日志中观察到的内容如下:---

    您不应该将“SessionFactory”作为参数传递,只需删除 n 检查是否工作。

    在您的代码中:-----

    @Bean
        @Autowired
        public HibernateTransactionManager transactionManager(SessionFactory s) {
             HibernateTransactionManager transactionManager
             = new HibernateTransactionManager();
           transactionManager.setSessionFactory(sessionFactory().getObject());
            return transactionManager;
        }
    

    但应该是这样的:----

    @Bean
            @Autowired
            public HibernateTransactionManager transactionManager() {
                 HibernateTransactionManager transactionManager
                 = new HibernateTransactionManager();
               transactionManager.setSessionFactory(sessionFactory().getObject());
                return transactionManager;
            }
    

    【讨论】:

      【解决方案2】:

      我的问题是我使用的 Hibernate 版本;当我运行 Hibernate 5 时,不再支持多个类和依赖项,例如 org.jadira.usertypejoda-timeQuery 作为类或 SetString() 作为方法。

      参考资料:

      Resolving java.lang.AbstractMethodError, Error creating bean with name 'entityManagerFactory' in Spring

      Migrating To Hibernate 5 from 3

      添加了以下依赖,

              <dependency>
              <groupId>org.hibernate</groupId>
              <artifactId>hibernate-java8</artifactId>
              <version>5.4.2.Final</version>
          </dependency>
      

      我从 pom.xml 中删除了 org.jadira.usertypejoda-time 依赖项。但是,我的 POJOS/Spring Bean 被设计为使用这些依赖项,即使用 @DateTimeFormat 注释

      @Entity
      @Table(name = "APPLICANTS_EDUCATION")
      public class ApplicantEducation implements Serializable{
      
      
      private static final long serialVersionUID = 1L;
      
      @Column(name = "EDUCATION_TITLE")
      private String educationTitle;
      
      @Column(name = "SCHOOL_NAME")
      private String schoolName;
      
      @NotNull
      @DateTimeFormat(pattern = "DD/MM/YYYY")
      @Column(name = "START_DATE", nullable = false)
      @Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
      private String startDate;
      

      Annotation @Type 和对象类型已更改

      @NotNull
      @DateTimeFormat(pattern = "DD/MM/YYYY")
      @Column(name = "START_DATE", nullable = false)
      @Type(type = "org.hibernate.type.LocalDateTimeType")
      private LocalDateTime startDate;
      
      @DateTimeFormat(pattern = "DD/MM/YYYY")
      @Column(name = "END_DATE")
      @Type(type = "org.hibernate.type.LocalDateTimeType")
      private LocalDateTime endDate;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-09
        • 1970-01-01
        • 2016-09-17
        • 2018-09-20
        • 2021-01-29
        • 2014-12-11
        相关资源
        最近更新 更多