@Id 不创建主键

@Id doesn't create primary key

在我的 Spring 引导数据库项目中,我希望这个 'id' 字段是 auto-generated,唯一的主键,但它不是。当我检查 H2 数据库 GUI 时,主键是一些模糊的、隐藏的第 3 列,当我查询 table 时甚至没有列出。我附上了它的截图。

H2 数据库 GUI 的屏幕截图:

这是我的@Entityclass。

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