![](/img/trans.png)
[英]How to solve invocation of init method failed: 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.usertype
、 joda-time
、 Query
為 class 或SetString()
作為方法。
參考:
解決 java.lang.AbstractMethodError,Error creating bean with name 'entityManagerFactory' in Spring
添加了以下依賴項,
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-java8</artifactId>
<version>5.4.2.Final</version>
</dependency>
我從 pom.xml 中刪除了org.jadira.usertype
和joda-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.