Questions tagged «hilo»

5
什么是高/低算法?
什么是高/低算法? 我已经在NHibernate文档中找到了这一点(这是生成唯一密钥的一种方法,第5.1.4.2节),但是我没有找到有关其工作原理的很好的解释。 我知道Nhibernate可以处理它,并且我不需要了解内部,但是我很好奇。

6
休眠,@ SequenceGenerator和allocationSize
我们都知道使用Hibernate时的默认行为@SequenceGenerator-它使实际数据库序列增加一,将该值乘以50(默认allocationSize值)-然后将该值用作实体ID。 这是错误的行为,并与说明以下内容的规范冲突: distributionSize-(可选)从序列中分配序列号时要增加的数量。 需要说明的是:我不关心生成的ID之间的差距。 我关心与基础数据库序列不一致的 ID 。例如:任何其他应用程序(例如,使用纯JDBC)可能要在从序列获得的ID下插入新行-但是所有这些值可能已被Hibernate使用!疯狂。 有人知道任何解决此问题的方法(没有设置allocationSize=1,从而降低性能)吗? 编辑: 弄清楚。如果最后插入的记录的ID = 1,则HB同时51, 52, 53...在其新实体BUT中使用值:数据库中序列的值将设置为2。当其他应用程序使用该序列时,很容易导致错误。 另一方面:规范说(据我所知)应该将数据库序列设置为51,同时HB应该使用范围内的值 2, 3 ... 50 更新: 正如下面的史蒂夫·埃伯索尔(Steve Ebersole)所述:我所描述的行为(也是许多人中最直观的行为)可以通过设置启用hibernate.id.new_generator_mappings=true。 感谢大家。 更新2: 对于将来的读者,您可以在下面找到一个有效的示例。 @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USERS_SEQ") @SequenceGenerator(name = "USERS_SEQ", sequenceName = "SEQUENCE_USERS") private Long id; } …
117 java  hibernate  jpa  hilo 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.