gpt4 book ai didi

hibernate - Grails POJO 域类的序列生成器映射

转载 作者:行者123 更新时间:2023-12-02 15:12:30 25 4
gpt4 key购买 nike

我在 Grails/PostgreSql 应用程序中有 POJO 域类,我正在尝试为它的 ID 映射 postgres 序列生成器。

在 POJO 中:

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "flight_id")
public long getId() {
return id;
}

在 Postgres 中:
-- Sequence: flight_id

-- DROP SEQUENCE flight_id;

CREATE SEQUENCE flight_id
INCREMENT 1
MINVALUE 1n
MAXVALUE 9223372036854775807
START 1
CACHE 1;
ALTER TABLE flight_id
OWNER TO postgres;

当我尝试为该域运行 grails generate-all 时,我得到:
 Error creating bean with name 'transactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Unknown Id.generator: flight_id

除了这个,其他一切似乎都正常。我正在尝试使用 Postres native 生成器,因此我可以选择对独立于 Grails 应用程序的数据库运行 CRUD 操作。

任何提示将不胜感激。

最佳答案

有两个问题:

  • 当 GenerationType.SEQUENCE 似乎是首选且
  • 时使用 GenerationType.AUTO(持久性提供者自由选择策略)
  • 错误假设 flight_idgenerator = "flight_id"直接指数据库序列的名称,实际上指的是:(直接来自文档):

    The name of the primary key generator to use as specified in the SequenceGenerator or TableGenerator annotation


  • 应该做的是将策略更改为 GenerationType.SEQUENCE并定义 SequenceGenerator与数据库序列一致并且对 name 具有相同的值属性原样 generator GeneratedValue 中的属性。

    关于hibernate - Grails POJO 域类的序列生成器映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11605417/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com