创建sessionfactory bean失败(调用init方法失败)[java.lang.abstractmethoderror]

cpjpxq1n  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(664)

在创建一个简单的spring mvc应用程序,运行以下版本时,我遇到了abstractmethoderror:
hibernate-5.4.2.final spring-5.1.6.release java-11.0.9
我认为问题在于我在存储库、服务和应用程序上下文之间的连接方式。
org.springframework.beans.factory.beancreationexception:创建名为“sessionfactory”的bean时出错,该bean在类路径资源[com/mycvonline/configuration/hibernateconfiguration.class]中定义:调用init方法失败;嵌套异常为java.lang.abstractmethoderror
整个代码都在我的github中https://github.com/diego-oviedo/jobboardwithspring
任何帮助都将不胜感激

z4bn682m

z4bn682m1#

用你的日志猜虫子真的很难。请您更新完整的日志报告,以便我们以正确的方式回答。
我在你的日志里看到的东西below:---
您不应该传递“sessionfactory”作为参数,只需删除并检查是否工作。
在你的code:-----

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

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

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

s5a0g9ez2#

我的问题是我使用的hibernate版本;当我运行Hibernate5时,一些类和依赖项不再受支持,例如 org.jadira.usertype , joda-time , Query 作为一个班级,或者 SetString() 作为一种方法。
参考文献:
正在解析java.lang.abstractmethoderror,在spring中创建名为“entitymanagerfactory”的bean时出错
从3迁移到hibernate 5
添加了以下依赖项,

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

我移除了 org.jadira.usertype , joda-time 来自my pom.xml的依赖项。然而,我的pojo/springbean被设计成使用这些依赖关系,即 @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;

注解 @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;

相关问题