首页 > 解决方案 > Spring Boot JPA保存不起作用

问题描述

我正在将在 Websphere 中运行的 Spring Boot 1.2.4 迁移到 Spring Boot 1.5.9。此应用程序使用带有 Hibernate 的 Spring Data JPA。迁移后,其中一种保存方法无法按预期工作。当我尝试在表中插入一个新行时,出现 SQLCODE=-204、SQLSTATE=42704 的异常,但相同的代码在 Spring Boot 1.2.4 中运行良好。

我的 Pom.xml 如下所示。

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
    </parent>

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>           
        </dependency>

Spring Boot 1.2.4 配置如下所示。

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>1.2.4</version>
        </dependency>

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.3.10.Final</version>
    </dependency>

    @Repository
    public interface MyDataRepository extends CurdRepository<MyEntity,Long>{}

    @Service
    public class MyDataService{

   @Autowired
   private MyDataRepository myDataRepository;

   public void insertMyDate(MyData myData){
     myDataRepository.save(myData)
   } 

   }

   @Entity
   @Table(name="MYDATA" ,schema="MYSCHEMA")
   public class MyData implements java.io.Serializable {

   private int memberId;
   private String firstName;
   private String lastName;
   private Date dateofBirth;

   @GeneratedValue(strategy=GenerationType.AUTO)
   @Id 
   @Column(name="MEMBER_ID",uniqueue=true,nullable=false)
   public int getMemberId(){
    return this.memberId;
   }

  public void setMemberId(int memberId){
   return this.memberId = memberId;
   }

   //Geter and Setters
   }

在 1.5.9 中执行保存方法时使用相同的代码得到以下异常。

无法提取结果集;SQL [不适用];嵌套异常是 org.hibernate.exception.SQLGrammarException: could not extract ResultSet

标签: spring-bootspring-data-jpaspring-data

解决方案


您不需要这个 hibernate-entitymanager 依赖项,因为您正在使用存储库来保存数据


推荐阅读