生成序列 NexVal 而不执行 select 查询
Generate sequence NexVal without execute select query
我的class不是实体有代码片段
@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,可以吗?
We all know the default behaviour of Hibernate when using @SequenceGenerator - it increases real database sequence by one, multiple this value by 50 (default allocationSize value) - and then uses this value as entity ID.
From G. Demecki
这意味着您的 Java-程序中未生成 ID id。它是在您的数据库中创建的。所以在数据库中实际生成之前你无法读取它。您可以使用 G.Demecki 描述的公式来猜测它,但这肯定不是正确的方法。
如果你想要一个实体的 id,只需保存它并从保存的 return 值中读取 id 应该是保存的实体本身。
你可以像这个thread中提到的那样消费nextVal
但是你必须考虑它是通过SQL这句话消费的,这意味着这是一个耦合到数据库的解决方案.
我不知道如何以您上面所问的方式消费 nextVal
。
我的class不是实体有代码片段
@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,可以吗?
We all know the default behaviour of Hibernate when using @SequenceGenerator - it increases real database sequence by one, multiple this value by 50 (default allocationSize value) - and then uses this value as entity ID.
From G. Demecki
这意味着您的 Java-程序中未生成 ID id。它是在您的数据库中创建的。所以在数据库中实际生成之前你无法读取它。您可以使用 G.Demecki 描述的公式来猜测它,但这肯定不是正确的方法。 如果你想要一个实体的 id,只需保存它并从保存的 return 值中读取 id 应该是保存的实体本身。
你可以像这个thread中提到的那样消费nextVal
但是你必须考虑它是通过SQL这句话消费的,这意味着这是一个耦合到数据库的解决方案.
我不知道如何以您上面所问的方式消费 nextVal
。