迁移到Hibernate 5.2.7后,我似乎得到不正确的值为id字段。休眠5 sequencegenerator没有给出正确的值
我的代码:
@Id @SearchableId
@GeneratedValue(strategy=GenerationType.AUTO, generator="hms_seq_gen")
@SequenceGenerator(name="hms_seq_gen", sequenceName="patregn_seq")
protected Integer ID;
Hibernate的火灾此查询:
select nextval ('patregn_seq')
这给5367.最后一个值的id字段的表是5358.
我也得到这
ERROR: duplicate key value violates unique constraint "patientregistration_pkey" [java] Detail: Key (id)=(5318) already exists.
我是肯定这个问题类似于this和this,但我不得不问,因为给那里的解决方案并没有为我工作:
我加
<property value="true" name="hibernate.id.new_generator_mappings"/>
我的persistence.xml,但徒劳无功。任何帮助将不胜感激。
感谢您的建议。有用。但我现在有点困惑。根据Steve Ebersole在http://stackoverflow.com/questions/12737092/is-there-a-way-to-dynamically-choose-a-generatedvalue-strategy-using-jpa-annota上的评论,它应该设置为true得到所描述的行为 - 这是我认为我需要的。另外,当我将该属性设置为false时,我得到一个警告:'发现使用了不推荐使用的[org.hibernate.id.SequenceGenerator]基于序列的id生成器;使用org.hibernate.id.enhanced.SequenceStyleGenerator来代替。“这,即使当我使用JPA SequenceGenerator –
是的,托马斯,它会产生一个警告。从用户指南 - “现有应用程序可能想要禁用此设置(将其设置为false),以将兼容性从3.x和4.x升级到5.x.”实际上,当你开始开发你的应用程序时,它应该被设置为true,但是对于遗留 - 你应该禁用它,否则你的应用程序将失败。 – idmitriev