我有一个具有以下定义的类:
@Id
@SequenceGenerator(name = "SEQ_ACE_WORKERS_QUEUE_STATS_ID", sequenceName = "SEQ_ACE_WORKERS_QUEUE_STATS_ID", allocationSize = 500)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_ACE_WORKERS_QUEUE_STATS_ID")
@Column(name = "ID")
private long Id;
当我们在 Jboss 4.2.3 上运行它时,它运行良好并生成了正确的 ID(从 1000+ 开始)
现在我们转移到 jboss 7.1.1,它会生成负 ID! (从 -498 开始向上)
知道为什么会发生这种情况吗?
原文由 Tomer 发布,翻译遵循 CC BY-SA 4.0 许可协议
我在从 JBoss 6.1 迁移到 JBoss 7.1 时遇到了这个问题。
根据 JBoss AS 7.1 JPA 文档( https://docs.jboss.org/author/display/AS71/JPA+Reference+Guide#JPAReferenceGuide-Persistenceunitproperties ),
JBoss 7.1 自动设置几个休眠属性。正在设置的属性之一是
hibernate.id.new_generator_mappings
激活使用不同算法且不向后兼容的新 ID 生成器。在 persistence.xml 文件中将此属性设置为 false 将恢复旧的 ID 生成器行为。hibernate 4 文档还包含有关新 ID 生成器的信息:http: //docs.jboss.org/hibernate/core/4.0/manual/en-US/html_single/#mapping-declaration-id-generator 。
hibernate 文档明确指出默认情况下不启用新的 ID 生成器,但如上所述,JBoss 7.1 会自动启用它们。