Java JPA GenerationType.Auto值始终为null
我在同一个项目中有几个类,其中id始终是自动生成的。 但是在这种特定情况下,我的id值始终为null。 我真的想知道出了什么问题,因为经过一些改变后它停止了工作。 并将其与其他类进行比较,代码似乎是相同的。
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 findById(Long id); }
最后这是我从Postman得到的结果
在此处输入图像描述
Generation类型AUTO
设置底层数据库以生成ID http://docs.oracle.com/javaee/6/api/javax/persistence/GenerationType.html#AUTO
在这种情况下,您要检查的是H2数据库id列是否具有生成ID的属性。 我猜它没有。 我自己也不使用AUTO,所以我假设你的Auto适用于其他Entities
那么这些设置正确。
您可能需要执行以下操作之一:
- 迁移到这里
- 在H2中更新列
- 重新创建表格
- Spring 4.3.0.RELEASE + Hibernate 5.2.0.Final + JPA Repository
- Hibernate对Java 9的支持
- Hibernate和mysql的连接太多了
- 没有定义名为’transactionManager’的bean
- @MappedSuperclass不是@entity?
- org.hibernate.StaleStateException:批量更新从update 返回意外的行数; 实际行数:0; 预期
- Hibernate将classname.hbm.xml放在哪里
- 无法从无处构建Hibernate SessionFactoryexception
- Spring3dependency injection无法使用mule