我的课不是实体,有代码片段
@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,那么保存的实体本身应该是什么。