当前位置: 首页 > 面试题库 >

休眠与Oracle序列不使用它

苏乐童
2023-03-14
问题内容

我已将hibernate配置为使用oracle序列。使用cache = 20,increment = 1创建序列。

一切正常,hibernate持久实体。id值很奇怪:50,51 .... 76,201,202 … 209,1008,1009,5129,5130 ....

如果我要求序列值(从双重选择hibernate_sequence.nextval),我会得到像2,3,4 …的值。

如果我打开hibernate sql
debug,则有时间不停地调用“从double中选择hibernate_sequence.nextval”,但是由hibernate分配给ID的编号不会按顺序传递!

@Id
@Column(name = "ID", insertable = false, updatable = false)
@SequenceGenerator(name = "SequenceIdGenerator", sequenceName = "HIBERNATE_SEQUENCE")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SequenceIdGenerator")
private Long id;

问题答案:

这是因为SequenceGenerator实际上不是序列生成器。这是一个序列高音发生器。这意味着,第一次调用它时,它将从序列中获取下一个值(例如6),然后将该值乘以50并得到结果(300)。下次调用它时,它返回301(不进行序列操作),依此类推,直到达到349。然后它向序列请求下一个值,并获得7,将其再次乘以50,得到350。算法描述可能相距一个,但您明白了。

如果停止并启动您的应用程序,则将存在空白。但是它比纯序列生成器更有效,因为它每50代只进行一次数据库调用。

参见http://docs.jboss.org/hibernate/core/3.6/reference/zh-
CN/html_single/#mapping-declaration-id-enhanced-
optimizers

和http://docs.jboss.org/hibernate/core/有关详细信息,请参见3.6 / reference /
zh-CN / html_single /#mapping-declaration-id-
generator。



 类似资料:
  • 问题内容: 我的数据库是Oracle,我的id列值是Oracle序列,此序列由触发器执行,因此,在插入每一行之前,此触发器使用此序列来获取id值。因此,我对应该在实体类中定义哪个id策略生成感到困惑。 要么 要么 真的很困惑,有人可以阐明这个话题吗?请清楚解释。 问题答案: 我还有一个projet,其中有一个Oracle DB将数据提供给我的@Entity类。如您所说,序列通过触发器生成表PK的I

  • 问题内容: 我已将Hibernate配置为使用PostgreSQL序列(通过注释)为主键 id 列生成值,如下所示: 通过这种配置,我看到的是,hibernate时,hibernate已经分配了 id 值> 3000,而对已用序列的查询显示了以下内容: (1列) 问题: 是否有错? hibernate状态应该与序列表同步吗? 如果不是,它将在哪里存储最后生成的ID? 谢谢。 问题答案: 我有同样的

  • 问题内容: 是否可以对 不是标识符/不是复合标识符一部分的 某些列使用DB序列? 我正在将hibernate用作jpa提供程序,并且我有一个表,其中包含一些生成的值(使用序列)的列,尽管它们不是标识符的一部分。 我想要的是使用序列为实体创建新值,其中序列的列 不是 主键(的一部分): 然后,当我这样做时: 该ID将被生成,但该属性也将由我的JPA提供程序生成。 为了清楚起见:我希望 Hiberna

  • 问题内容: 我似乎在Hibernate中映射列表时遇到问题。在我们的项目中有一类用含有类与含有。 Hibernate 是否可以使用注释进行映射?我的意思是,因为它没有注释? 问候 问题答案: 用途: 资料来源: 7.2.3。基本类型和可嵌入对象的集合

  • 问题内容: 我需要在应用程序中使用实体框架,并且在Oracle数据库中使用了表分区。使用简单的JDBC,我可以从特定分区中选择数据。但是我不知道我是否可以使用hibernate或Eclipse链接(JPA)进行相同操作。如果有人知道该怎么做,请告诉我。 通常是JDBC-SQL中的select语句, 如何使用Hibernates或JPA进行同样的操作? 请至少分享一个学习资源的链接。 谢谢!!! 问

  • 问题内容: 我有一个Spring和Hibernate3在生产中运行良好的应用程序。以下是Spring的applicationContext.xml中会话工厂的配置 生产正常。 现在,对于另一个项目,我们正在迁移到Hibernate4。我们使用org.springframework.orm.hibernate4。*包中的Hibernate 4的SessionFactory,TransacionMan