1

在hibernate中,当sequence用作插入的生成策略时,它首先从序列中查询DB以获得下一个值,然后将其设置在实体中。之后,该实体将持久保存在 db 中。所以总结一下执行了两个查询。

流动:

  • Hibernate 获取序列的下一个值
  • Hibernate 将获取的值设置为您的实体的 ID
  • Hibernate 持久化实体,它的 ID 在查询中设置

询问:

select CUSTOM_SEQUENCE.nextval from dual

然后在插入语句中使用此值。

问题:

无论如何,我们可以像INSERT INTO foobar (foo_id, foo) VALUES (FOOBAR_SEQUENCE.nextval, 'bar');在休眠中一样生成查询吗?

4

1 回答 1

2

作为替代方案,您可以使用 Hibernate seqhilo 生成器,它通过请求更大的序列并在内部处理 ID 来避免往返数据库。

于 2013-06-12T08:32:17.627 回答