我在一个主键生成值中使用Hibernate和JPA。我已经在数据库中创建了一个名为'bimester_id_seq'的序列。
sequences in pgadmin4
@Entity
@Table(name = "BIMESTER")
@Data
@NoArgsConstructor
public class Bimester {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "bimesterSeq")
@SequenceGenerator(name="bimesterSeq", sequenceName = "bimester_id_seq", schema = "public", allocationSize = 1)
private Long id;
}
字符串
只是警告,不是错误:
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create sequence public.bimester_id_seq start 1 increment 1" via JDBC Statement
Caused by: org.postgresql.util.PSQLException: ERROR: relation "bimester_id_seq" already exists
的数据
当我指定它的名字时,Hibernate总是试图创建它而不是简单地使用它。为什么会发生这种情况?我的数据库是postgresql。
1条答案
按热度按时间nom7f22z1#
您的hibernate版本可能高于5.2.7。
根据https://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html,
hibernate.id.new_generator_mappings
在更高版本中默认为true
&这可能是问题的原因。要避免这种情况,请使用
字符串
在您application.properties文件中(如果有的话),这样Hibernate就不会尝试为您创建序列。