我的课不是实体,有代码片段

@SequenceGenerator(name="seqUniqueKeyGenerator",sequenceName="SEQ_UNIQUE_KEY",allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seqUniqueKeyGenerator")
@Id
private Integer sequenceId;

public Integer getSequenceId() {
    return sequenceId;
}

public void setSequenceId(Integer sequenceId) {
    this.sequenceId = sequenceId;
}

public static void main(String[] args) {
    UniqueKeyGenerator uniqueKeyGenerator = new UniqueKeyGenerator();
    System.out.println(uniqueKeyGenerator.getSequenceId());

}


我想要这样检索nextVal,这可能吗?

最佳答案

我们都知道使用@SequenceGenerator时Hibernate的默认行为-它使实际数据库序列增加一,将此值乘以50(默认的allocationSize值)-然后将该值用作实体ID。

From G. Demecki


这意味着您的Java程序中未生成ID ID。它是在您的数据库中创建的。因此,您无法在数据库中手动生成之前读取它。您可以使用G.Demecki描述的公式进行猜测,但这当然不是可行的方法。
如果您想要一个实体的ID,只需保存它并从save的返回值中读取ID,那么保存的实体本身应该是什么。

09-10 20:07