休眠实体的主键中的空值

Null value in primary key of hibernate entity

我遇到了PK中空值的问题

这是一个实体:

@Entity
@Table(name="space")
public class Space implements Serializable {
    @Id
    @GeneratedValue
    @Column(nullable = false, unique = true)
    private Long id;
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="user_id")
    private UserAccount user;
    private String name;
    private String description;
    private Date createdTime;
    private Date modifiedTime;

    @OneToMany(mappedBy="space")
    private Set<SpaceAccess> spaceAccesses = new HashSet<>();

    public Set<SpaceAccess> getSpaceAccesses() {
        return spaceAccesses;
    }

    public void setSpaceAccesses(Set<SpaceAccess> spaceAccesses) {
        this.spaceAccesses = spaceAccesses;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Space() {}

    public long getId() {
        return id;
    }

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

    public UserAccount getUser() {
        return user;
    }

    public void setUser(UserAccount user) {
        this.user = user;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Date getCreatedTime() {
        return createdTime;
    }

    public void setCreatedTime(Date createdTime) {
        this.createdTime = createdTime;
    }

    public Date getModifiedTime() {
        return modifiedTime;
    }

    public void setModifiedTime(Date modifiedTime) {
        this.modifiedTime = modifiedTime;
    }
}

我编写了正确生成 PK 的策略,但是当我创建 Space:

的新实例时,我总是在 id 字段中得到 Null
Space space = new Space(); 

对象内容如下:

我应该如何使用 hibernate/spring 机制正确生成实例 ID?

application.properties:

spring.datasource.url="some_url"
spring.datasource.username=name
spring.datasource.password=password
spring.jpa.generate-ddl=true

P.S。我使用 spring-boot-starter-data-jpa 版本:2.3.4.RELEASE.

使用:

public Long getId() {
    return id;
}

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