簡體   English   中英

Spring MVC - 創建 SessionFactory Bean 失敗(調用 init 方法失敗)[java.lang.AbstractMethodError]

[英]Spring MVC - Failure Creating a SessionFactory Bean (Invocation of init method failed) [java.lang.AbstractMethodError]

我在創建一個簡單的 Spring MVC 應用程序時遇到了 AbstractMethodError,它運行以下版本:

Hibernate - 5.4.2.Final Spring - 5.1.6.RELEASE Java - 11.0.9

我認為問題在於我在存儲庫、服務和應用程序上下文之間進行連接的方式。

org.springframework.beans.factory.BeanCreationException:在 class 路徑資源 [com/MyCVOnline/configuration/HibernateConfiguration.class] 中定義名稱為“sessionFactory”的 bean 創建時出錯:調用 init 方法失敗; 嵌套異常是 java.lang.AbstractMethodError

整個代碼在我的 GitHub https://github.com/Diego-Oviedo/JobBoardWithSpring

任何形式的幫助將不勝感激

很難用你的日志來猜測錯誤。 要求您更新完整的日志報告,以便我們能夠以適當的方式回答。

我在您的日志中觀察到的內容如下:---

你不應該將“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;
        }

我的問題是我使用的 Hibernate 版本; 當我運行 Hibernate 5 時,不再支持多個類和依賴項,例如org.jadira.usertypejoda-timeQuery為 class 或SetString()作為方法。

參考:

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

從 3 遷移到 Hibernate 5

添加了以下依賴項,

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

我從 pom.xml 中刪除了org.jadira.usertypejoda-time依賴項。 但是,我的 POJOS/Spring Beans 被設計為使用這些依賴項,即使用@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和 object 類型已更改

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM