Java HIbernate 5:生成器类=";顺序;不起作用

Java HIbernate 5:生成器类=";顺序;不起作用,java,hibernate,hibernate-5.x,Java,Hibernate,Hibernate 5.x,我有以下映射: <id name="id" type="java.lang.Long" column="id"> <generator class="sequence"> <param name="sequence">tracksdata_seq</param> </generator> </id> 如何解决这个问题 p.S.Hibernate 5.0

我有以下映射:

    <id name="id" type="java.lang.Long" column="id">
        <generator class="sequence">
            <param name="sequence">tracksdata_seq</param>
        </generator>
    </id>
如何解决这个问题


p.S.Hibernate 5.0.2.最终版。

从Hibernate 4.3.10迁移到Hibernate 5.0.4时,我也遇到了这个问题。与maksim2020一样,我将
的实例替换为
。然而,为了保留受影响表的id序列,我还必须编写一个sql迁移脚本,将列的默认值设置为现有序列的下一个值。在PostgreSQL中,此操作如下所示:

ALTER TABLE ONLY affected_table ALTER COLUMN affected_id SET DEFAULT nextval('original_sequence'::regclass);
您有两个选择:

  • hibernate.id.new_generator_mappings
    configuration属性设置为false,并切换回旧的标识符生成器
  • 您可以根据以下内容更改映射:

    
    MY_序列
    
    致:

    
    没有一个
    1.
    MY_序列
    
  • 中使用
    “序列\名称”
    而不是
    中的
    “序列”


    这对我很有用。

    它正在寻找序列hibernate\u序列,您在上面的映射中提到过吗?您有tracksdata_seq,不确定这是否指的是hyberante_sequence这不应该指的是hibernate_sequence-它必须使用tracksdata_seq,就像在hibernate 4.2中一样。@maksim2020我在从4.3.8迁移到5.0.6 final时遇到了同样的问题。只有在使用XML映射时才会发生这种情况。我切换到JPA注释,效果很好。请注意,参数名称不再是“sequence”,而在版本5中是“sequence_name”。请参阅Spring引导格式:Spring.jpa.properties.hibernate.id.new_生成器_映射。但是我还需要spring.jpa.properties.hibernate.default\u架构来使用正确的架构名称。class=“sequence”生成器已被弃用,因此可能值得按照其他答案中的说明对其进行更改,但同时此更改更容易,谢谢!
    ALTER TABLE ONLY affected_table ALTER COLUMN affected_id SET DEFAULT nextval('original_sequence'::regclass);