@Id 不创建主键
@Id doesn't create primary key
在我的 Spring 引导数据库项目中,我希望这个 'id' 字段是 auto-generated,唯一的主键,但它不是。当我检查 H2 数据库 GUI 时,主键是一些模糊的、隐藏的第 3 列,当我查询 table 时甚至没有列出。我附上了它的截图。
H2 数据库 GUI 的屏幕截图:
这是我的@Entity
class。
package com.schabby.springdb;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Entry implements Serializable {
@GeneratedValue(strategy=GenerationType.AUTO)
@Id
private Long id;
private String text;
public Entry() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
试试这个:
@Entity
public class Entry implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String text;
public Entry() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
此处IDENTITY
表示持久性提供程序必须使用数据库标识列为实体分配主键。
您可以参考下面的参考资料以了解更多关于不同的 GenerationType
。
参考: https://docs.oracle.com/javaee/5/api/javax/persistence/GenerationType.html
在我的 Spring 引导数据库项目中,我希望这个 'id' 字段是 auto-generated,唯一的主键,但它不是。当我检查 H2 数据库 GUI 时,主键是一些模糊的、隐藏的第 3 列,当我查询 table 时甚至没有列出。我附上了它的截图。
H2 数据库 GUI 的屏幕截图:
这是我的@Entity
class。
package com.schabby.springdb;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Entry implements Serializable {
@GeneratedValue(strategy=GenerationType.AUTO)
@Id
private Long id;
private String text;
public Entry() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
试试这个:
@Entity
public class Entry implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String text;
public Entry() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
此处IDENTITY
表示持久性提供程序必须使用数据库标识列为实体分配主键。
您可以参考下面的参考资料以了解更多关于不同的 GenerationType
。
参考: https://docs.oracle.com/javaee/5/api/javax/persistence/GenerationType.html