【问题标题】:Hibernate sequence not generated未生成休眠序列
【发布时间】:2017-07-04 11:09:16
【问题描述】:

我正在开发一个带有 Hibernate 和 PostgreSQL 数据库的 Spring(不是 Boot!)项目。我也使用 Flyway 进行迁移。 我使用 Flyway 生成数据库的架构,并在我的资源文件夹中使用给定的 SQL 脚本将初始数据插入其中。出于这个原因,我从 hibernate.properties 文件中排除了 hibernate.hbm2ddl.auto 属性。 在启动时,创建了模式并将数据插入到数据库中,但我的问题是,这种方式 Hibernate 不会生成其序列,并且我无法从应用程序中保存数据:

org.postgresql.util.PSQLException: ERROR: relation "hibernate_sequence" does not exist

我能用这个做什么?

【问题讨论】:

  • 您应该提供架构。但是错误消息是说hibernate_sequence 不存在。所以你必须创建序列到数据库并尝试。
  • 我明白了。所以手动创建一个 SQL 脚本来创建 hibernate_sequence 是完全可以的?
  • 是的。导致休眠无法生成架构。

标签: java spring postgresql hibernate sequence


【解决方案1】:

由于您没有提供任何代码不确定那里有什么问题,假设缺少 @SequenceGenerator 注释,我将提供一个对我有用的代码。

@Entity
@Table(name = "your_table")
@SequenceGenerator(name = "your_table_id_seq", sequenceName = "your_table_id_seq", allocationSize = 1)
public class YourTable implements Serializable {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "your_table_id_seq")
private Long id;

。 . .

【讨论】:

  • 谢谢,我也期待实施这个解决方案!
【解决方案2】:

你需要像这样创建一个序列:

CREATE SEQUENCE hibernate_sequence START 1;

【讨论】:

  • 现在好多了,但仍然有错误。序列已创建,但现在无法从应用程序插入数据,因为org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "user_pkey" Detail: Key (id)=(1) already exists. 顺序如下:创建hibernate_sequence,创建表,插入数据。似乎插入数据不会增加 hibernate_sequence 中的值?
  • 在您的架构中添加 DEFAULT nextval(‘hibernate_sequence’)id
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 2015-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多