Java JPA GenerationType.Auto 值始终为 null

标签 java json hibernate jpa persistence

我在同一个项目中有几个类,其中 id 始终是自动生成的。然而,在这种特定情况下,我的 id 值恰好始终为空。我真的很想知道出了什么问题,因为经过一些更改后它停止工作。与其他类相比,代码似乎是相同的。

package com.checkin.model.entity;
import javax.persistence.*;


@Entity
public class Checkin {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column(nullable = false)
private String date;

public Checkin(){

}

public Checkin(String date){
    this.date = date;
    System.out.println(this.id);
    System.out.println(this.getId());
}


public Long getId() {return id;}

public void setId(Long id) {this.id = id;}

public String getDate() {return date;}

public void setDate(String date) {this.date = date;}

}

这是保存对象的存储库:

package com.checkin.model.repository;

import com.checkin.model.entity.Checkin;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository("checkinRepository")
public interface CheckinRepository extends CrudRepository<Checkin, Long> {
   Checkin findById(Long id);


}

最后这是我从 postman 那里得到的结果

enter image description here

最佳答案

Generation类型AUTO设置底层数据库生成ID http://docs.oracle.com/javaee/6/api/javax/persistence/GenerationType.html#AUTO

在这种情况下,您要检查的是H2数据库id列是否具有生成ID的属性。我猜不会。我自己不太使用 AUTO,所以我假设如果您的 Auto 适用于其他实体,那么这些设置正确。

您可能需要执行以下操作之一:

  • 迁移到这里
  • 更新 H2 中的列
  • 重新创建表格

关于Java JPA GenerationType.Auto 值始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44230792/

相关文章:

java - Spring Security 拦截器 URL 不起作用

java - Maven 构建抛出 java.lang.NoClassDefFoundError

java - Hibernate、MySQL Views 和 hibernate.hbm2ddl.auto = validate

java - 如何分配对象而不将它们保存在变量中?

Java - 连接同一网络上的两台机器

php - php处理json序列化表单数据

php - 为什么 JSON 数据包含在方括号中?

javascript - 如何动态创建一个列表,其中每一行都必须具有特定格式?

mysql - 相当于 <generator class ="native"></generator> 使用 MySQL 和 Hibernate3 注释

hibernate - 陈旧状态异常 : Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1