Spring Data JPA:Spring in Action中的示例未运行

时间:2019-06-24 07:52:58

标签: java spring hibernate spring-boot jpa

我尝试在操作5中从Spring开始示例。STS向我显示错误:

  

启动ApplicationContext时出错。显示条件报告   在启用“调试”的情况下重新运行您的应用程序。 2019-06-24 10:47:06.472   错误6300 --- [restartedMain] o.s.boot.SpringApplication
  :应用程序运行失败

     

org.springframework.beans.factory.BeanCreationException:错误   在类路径中创建名称为“ entityManagerFactory”的bean   资源   [org / springframework / boot / autoconfigure / orm / jpa / HibernateJpaConfiguration.class]:   调用init方法失败;嵌套异常为   javax.persistence.PersistenceException:[PersistenceUnit:默认]   无法建立Hibernate SessionFactory;嵌套异常为   org.hibernate.MappingException:无法获取构造函数   org.hibernate.persister.entity.SingleTableEntityPersister

此示例可能会在此处接收:GitHub - Spring in action: Spring Data JPA

你能帮我吗?如果还需要示例代码,我可以在此处复制。

2 个答案:

答案 0 :(得分:0)

此示例无法在Java> 8上运行。

您必须使用Java 8来直接运行它。

Spring Boot 2.0.x不支持Java 11。

您应该将示例升级到2.1.6

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

答案 1 :(得分:0)

我尝试重现您的错误,我也发现了同样的情况

  

由于:org.hibernate.MappingException:无法获取构造函数   org.hibernate.persister.entity.SingleTableEntityPersister

我读了评论Spring Data JPA: Example from Spring in Action don't run

更改

@NoArgsConstructor(access=AccessLevel.PRIVATE, force=true)

@NoArgsConstructor(access=AccessLevel.PUBLIC, force=true)

不能解决问题。保持原始状态。

解决方案:

(1)我正在使用JDK12。添加依赖项

<!-- https://mvnrepository.com/artifact/org.javassist/javassist -->
<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>3.25.0-GA</version>
</dependency>

(2)程序argumnet

--illegal-access=ignore

结果:在控制台日志中,applicaton运行成功

  

休眠:插入成分(名称,类型,id)值(?,?,?)