【问题标题】:Unknown table 'hibernate_sequence' in field list字段列表中的未知表“hibernate_sequence”
【发布时间】:2019-01-04 05:04:27
【问题描述】:

我这里有个奇怪的错误...

我在这个项目上配置了两个数据库,当我尝试保存到本地 mysql 存储库时,我得到标题错误。 此外,我还使用了远程 oracle 数据库。

Hibernate: 
select
    hibernate_sequence.nextval 
from
    dual

然后

[nio-8080-exec-9] o.h.engine.jdbc.spi.SqlExceptionHelper   : Unknown table 'hibernate_sequence' in field list

并且数据库中没有名为 hibernate.sequence 的表,或者类中没有属性。

   @Id
@GeneratedValue
long id;

@Column(name = "customerid")
private String customerid;

@OneToMany(targetEntity = C_Portfolio.class, fetch = FetchType.LAZY, cascade = {CascadeType.ALL}, orphanRemoval=true)
@Fetch(FetchMode.SELECT)
private List<C_Portfolio> portfolios;

@Column(name = "date")
private LocalDate date;

@Column(name = "date_time")
private LocalDateTime datetime;

此外,在保存之前一切似乎都正常。当我检查要以调试器模式保存的类时。它具有所有需要的值,并且一切似乎都很好。

【问题讨论】:

  • 请分享hibernate和spring boot的版本。
  • Hibernate 中 AUTO 的后备策略是 SEQUENCE,但是由于 MySQL 不支持序列,Hibernate 使用表来模拟它们。将您的策略​​更改为 IDENTITY。比如 GenerationType.IDENTITY

标签: mysql hibernate spring-boot


【解决方案1】:

您只是在 POJO 中使用了@GeneratedValue,因此它会尝试查找序列表。由于您没有指定序列表名称,它将查找默认序列表“hibernate_sequence”。

对于 mysql,它通过在 POJO 中指定如下来增加值:

@GeneratedValue(strategy = GenerationType.AUTO)

如果你使用它,它会生成一个名为 hibernate_sequence 的表,为 ID 序列提供下一个编号。

【讨论】:

  • 我刚刚将它添加到我的所有实体中,它仍在寻找 hibernate_sequence。我会寻找更多实体,但我不知道是否可以找到更多 GeneratedValues
  • 试试@GeneratedValue(strategy = GenerationType.AUTO)
  • 好吧,有一个我没注意到...谢谢,这有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2019-12-09
  • 2023-03-14
  • 2020-10-27
相关资源
最近更新 更多