3

我想利用 SequenceGenerator 并从序列生成器中获取下一个值。我想避免去数据库,并依靠序列生成器给我一个独特的价值。此外,我正在使用该值在显示字段中显示唯一 ID,而不保留对象。

4

3 回答 3

5

它适用于甲骨文:

Query q = em.createNativeQuery("SELECT nombreSecuencia.NEXTVAL FROM DUAL");

return (java.math.BigDecimal)q.getSingleResult();
于 2015-12-13T15:17:33.867 回答
4

要仅获取下一个序列值,您可以使用以下命令:

Query q = em.createNativeQuery("select nextval('schema.sequence_name')");
return (Long)q.getSingleResult();
于 2013-01-22T14:24:59.367 回答
2

如果我们忽略JPA 价值生成策略,那么SEQUENCE 策略是您的最佳选择。

与 AUTO 和 IDENTITY 不同,SEQUENCE 策略会在新实体对象被持久化后立即生成一个自动值(即在 commit 之前)。当更早需要主键值时,这可能很有用。为了尽量减少到数据库服务器的往返次数,ID 被分组分配。

每个分配中的 ID 数量由 allocationSize 属性指定。

如果您需要之前从序列中生成的 ID,只需持久化对象并检索其 ID。稍后您可以将其从持久性上下文中删除。


我不确定为什么在坚持之前需要身份证。而且我认为从序列生成器中获取价值是没有意义的。我不建议您弄乱生成的值,也不建议您对 id 使用手动值。使用开箱即用的功能。

于 2012-07-13T10:49:46.443 回答