我已经在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独立运行。
答案 0 :(得分:0)
得到解决方案。而不是GenerationType.IDENTITY,GenerationType.AUTO正在工作
答案 1 :(得分:0)
如果您是从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")