我已经在Postgres中对表格进行了分区。因此,现在有2个表:
子表继承用户
CREATE TABLE users_part_2019_01 (
CHECK (createdon >= '2019-01-01 00:00:00'
AND createdon < '2019-02-01 00:00:00')
) INHERITS (users);
ALTER TABLE users_part_2019_01 ADD CONSTRAINT users1_pkey PRIMARY KEY (id);
我正在使用jpa将数据插入到用户表中。在数据模型中,我使用了:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
出现以下错误:
“ org.springframework.orm.jpa.JpaSystemException:数据库返回没有本地生成的身份值;嵌套异常为org.hibernate.HibernateException:数据库没有本地返回产生的身份价值在org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:333)在org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:244)“
它正在与postgres一起独立工作。
得到解决方案。 GenerationType.AUTO正在代替GenerationType.IDENTITY工作
如果您是从Spring Boot(2.2.x +)来的,并且使用了postgresql分区,仅接受的答案不足以使其正常工作。在这种情况下,休眠将抛出以下内容:
Schema-validation: missing sequence [schema_name.hibernate_sequence]
在这种情况下,休眠状态只是希望您通过将其传递为:来为序列字段提供身份生成器:
@GeneratedValue(strategy = GenerationType.AUTO, generator = "schema_name.generator_sequence_name_seq")