- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我对表格做任何事情时,它总是显示错误:
Hibernate: select nextval ('hibernate_sequence')
2019-07-20 16:15:44.877 WARN 58376 --- [nio-9000-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 42P01
2019-07-20 16:15:44.877 ERROR 58376 --- [nio-9000-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper : ERROR: relation "hibernate_sequence" does not exist
我不想使用 hibernate_sequence 在表之间共享 id sequence,而是想为每个表定义 id seq 并分别使用它们。
我使用Spring Boot 2.1.6.RELEASE、Spring Data JPA(Hibernate 5.3.10.Final)、Postgres 11.2,定义id字段为BigSerial类型,希望在各自实体中使用各表的id序列类。
演示仓库在这里:https://github.com/Redogame/share_hibernate_sequence
创建用户表(使用 identity 作为表名,因为 user 是 Postgres 保留关键字)。通过定义bigserial类型的id,Postgres会自动创建一个identity_id_seq,我验证identity_id_seq已经创建成功。
create table identity
(
id bigserial not null
constraint identity_pkey
primary key,
name varchar(255) not null
constraint identity_name_key
unique
constraint identity_name_check
check ((name)::text <> ''::text),
created_date timestamp not null,
created_by_id bigint not null
constraint identity_identity_id_fk
references identity,
last_modified_date timestamp not null,
last_modified_by_id bigint not null
constraint identity_identity_id_fk_2
references identity,
version bigint not null
);
指定一个序列生成器来使用这个id序列:
@Table(name = "identity")
public class UserEntity extends Auditable<Long> {
@Id
@SequenceGenerator(name="identity_id_seq", sequenceName = "identity_id_seq", initialValue=1, allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="identity_id_seq")
private Long id;
但它不起作用。我还尝试配置 spring.jpa.hibernate.use-new-id-generator-mappings
和 spring.jpa.properties.hibernate.id.new_generator_mappings
,但还是不行工作。
spring:
jpa:
hibernate:
use-new-id-generator-mappings: false
properties:
hibernate:
id:
new_generator_mappings: false
我希望不使用 hibernate_sequence,即:不要在任何 SQL 语句之前/之后执行 select nextval ('hibernate_sequence')。
最佳答案
尝试以下步骤
如果不存在则创建序列 manual_seq;
修改建表脚本
create table identity
(
id integer NOT NULL DEFAULT nextval('manual_seq'::regclass),
name varchar(255) not null
constraint identity_name_key
unique
constraint identity_name_check
check ((name)::text <> ''::text),
created_date timestamp not null,
created_by_id bigint not null,
last_modified_date timestamp not null,
last_modified_by_id bigint not null,
version bigint not null,
CONSTRAINT manual_seq_pkey PRIMARY KEY (id)
);
出于测试目的,我删除了外键约束。
@Entity
@Table(name = "identity")
@JsonIgnoreProperties(ignoreUnknown = true)
public class UserEntity extends Auditable<Long> {
@Id
@SequenceGenerator(name="manual-seq", sequenceName = "manual_seq",allocationSize = 1)
@GeneratedValue(generator="manual-seq")
private Long id;
@Basic
@Column(name = "name", nullable = false)
private String name;
@MappedSuperclass
@JsonIgnoreProperties({"new", "createdDate", "createdById", "lastModifiedDate", "lastModifiedById", "version"})
abstract class Auditable<PK extends Serializable>{
@NotAudited
@CreatedDate
@Temporal(TemporalType.TIMESTAMP)
private Date createdDate;
@NotAudited
@CreatedBy
private Long createdById;
@LastModifiedDate
@Temporal(TemporalType.TIMESTAMP)
private Date lastModifiedDate;
@LastModifiedBy
private Long lastModifiedById;
@NotAudited
@Version
private Long version;
还原 spring.jpa.hibernate.use-new-id-generator-mappings
问题是扩展 AbstractPersistable 因为没有使用数据库序列。另请注意,出于测试目的,我已删除审核。
关于postgresql - 使用 postgres 表序列而不是共享 hibernate_sequence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57123067/
构建 JHipster 应用程序时出现此错误: org.springframework.beans.factory.BeanCreationException: Error creating bean
我将 hibernate 与 oracle 一起使用。hibernate_sequence 表有几个sequence_name 的重复条目(一个是小写字母,另一个是大写字母) @Entity @Tab
我这里有一个奇怪的错误... 我在这个项目上配置了两个数据库,当我尝试保存到本地 mysql 存储库时,出现标题错误。另外我正在使用远程oracle数据库。 Hibernate: select
默认情况下,Hibernate 使用一个名为 hibernate_sequence 的全局序列。因此,如果添加客户记录,id 生成 100,而接下来我添加国家记录,id 生成 101。 在国家模型中
我有生成策略 AUTO 的 id 列,我想知道,为什么 MySql 生成 hibernate_sequence 表?我以为 hibernate 会选择 IDENTITY id 生成策略
我有生成策略 AUTO 的 id 列,我想知道,为什么 MySql 生成 hibernate_sequence 表?我以为 hibernate 会选择 IDENTITY id 生成策略
我是 hibernate 和 postgres 的新手。实际上我正在尝试使用 Hibernate 映射 potgres 数据库。这是我在 postgresql 中的表结构 CREATE TABLE e
我有这个用户类 @Entity public class User { @Id @GeneratedValue(strategy=GenerationType.SEQUENCE)
hibernate 版本: org.hibernate hibernate-core 5.2.4.Final ExportDB.java: public class Exp
我们正在尝试将我们的微服务迁移到 Spring Boot 2,目前,我们正在使用 Spring Boot 1.5.6.RELEASE。 在迁移过程中,我们发现我们的微服务部分损坏,在日志文件中我们发现
我用的是Spring 4.3.3.RELEASE,Hibernate 5.2.2.Final,数据库是MySQL。我想试试 strategy = GenerationType.TABLE。据我所知,对
当我对表格做任何事情时,它总是显示错误: Hibernate: select nextval ('hibernate_sequence') 2019-07-20 16:15:44.877 WARN
我有一个使用 spring data/jpa 的 SpringBoot 2.0.1.RELEASE 应用程序 org.springframework.boot spring-boot
我正在将 Hibernate Envers 与实体一起使用 @Entity @Table(name = "users", schema = "core") @Audited public class
在我的 spring mvc 应用程序中,我有以下对象。我正在尝试在我的应用程序中使用 devtool 来可视化数据。 @Entity @Data public class ConsultationR
我在为 JHipster 生成的实体生成 ID 时遇到了问题: H2 数据库开发环境 Postgres 上的生产环境 我有一个实体“station”,有两个字段“id”和“name” 创建一个 liq
在我的每个域中,我都在静态映射闭包中定义了一个自定义序列: static mapping = { version false id generator:'sequence', para
我有一个镜像备份,已将其还原到 MS SQL Server 2016。我有一个实体,它的 id 声明如下: @Id @GeneratedValue(strategy = GenerationType.
我正在尝试在 Oracle JPA 中使用定义的序列生成以及 GenerationType.AUTO,如下所示: @Id @SequenceGenerator(name = "MY_GEN_NAME"
所以我正在尝试使用 sql-maven-plugin 来导入我的备份数据库。我在我的实体上使用了注释 @GeneratedValue(strategy = GenerationType.TABLE )
我是一名优秀的程序员,十分优秀!