【问题标题】:Spring Boot JPA Save not workingSpring Boot JPA保存不起作用
【发布时间】:2018-07-22 22:03:45
【问题描述】:

我正在将在 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

【问题讨论】:

  • 如果你不分享一些代码很难提供帮助
  • @Pedro 添加了在 Spring Boot 1.2.4 和 Websphere 中工作但在 Spring Boot 1.5.9 中不起作用的示例代码。生成序列时出现异常。
  • 您能添加 DDL 吗?
  • 尝试启用查询日志以查看生成的查询:logging.level.org.hibernate.SQL=DEBUG logging.level.org.hibernate.type=TRACE
  • @GeneratedValue(strategy=GenerationType.AUTO) 如果我更改 @GeneratedValue(strategy=GenerationType.IDENTITY) 则无法生成序列号。

标签: spring-boot spring-data-jpa spring-data


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2018-07-26
    • 2020-07-11
    • 2018-12-09
    • 2020-02-03
    • 2018-06-15
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    相关资源
    最近更新 更多