Tag: hilo

Hibernate,@SequenceGenerator和allocationSize

当使用@SequenceGenerator时,我们都知道Hibernate的默认行为 – 它将实际的数据库序列增加1 ,将此值乘以50(默认的allocationSize值),然后将此值用作实体ID。 这是不正确的行为,并与说: allocationSize – (可选)从序列中分配序列号时要增加的数量。 要清楚:我不打扰生成的ID之间的差距。 我关心与底层数据库序列不一致的 ID。 例如:任何其他应用程序(例如使用普通JDBC)可能需要在从序列获得的ID下插入新行 – 但所有这些值可能已被Hibernate使用! 疯狂。 有人知道这个问题的任何解决scheme(没有设置allocationSize=1 ,从而降低性能)? 编辑: 把事情弄清楚。 如果最后插入的loggingID = 1 ,那么HB为其新实体BUT同时使用值51, 52, 53… :数据库中的序列值将被设置为2 。 当其他应用程序正在使用该序列时,这很容易导致错误。 另一方面:规范说(按照我的理解)数据库序列应该被设置为51 ,同时HB应该使用范围2, 3 … 50 更新: 正如Steve Ebersole在下面提到的:通过设置hibernate.id.new_generator_mappings=true可以启用我描述的行为(也是最直观的行为)。 谢谢你们。 更新2: 对于未来的读者,下面你可以find一个工作的例子。 @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USERS_SEQ") @SequenceGenerator(name […]

什么是Hi / Loalgorithm?

什么是Hi / Loalgorithm? 我在NHibernate文档中find了这个(这是一个生成唯一键的方法,第5.1.4.2节),但是我还没有find一个很好的解释。 我知道Nhibernate处理它,我不需要知道里面,但我只是好奇。