gpt4 book ai didi

java - 使用 GenerationType.AUTO 未找到用于 h2 测试的序列 "HIBERNATE_SEQUENCE"

转载 作者:行者123 更新时间:2023-12-03 18:32:28 25 4
gpt4 key购买 nike

我正在尝试将我们的一项服务迁移到Spring Boot 2.0.3。
虽然大多数测试都很好,但其中一个失败并出现错误:

Caused by: org.h2.jdbc.JdbcSQLException: Sequence "HIBERNATE_SEQUENCE" not found; SQL statement:
call next value for hibernate_sequence [90036-197]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
at org.h2.message.DbException.get(DbException.java:179)
at org.h2.message.DbException.get(DbException.java:155)
at org.h2.command.Parser.readSequence(Parser.java:5970)
at org.h2.command.Parser.readTerm(Parser.java:3131)
at org.h2.command.Parser.readFactor(Parser.java:2587)

这确实令人困惑,因为所有实体都依赖于相同的代 ID 机制:
@GeneratedValue(strategy = GenerationType.AUTO)

这是一个存储库测试,存储库本身非常简单:
@Repository
public interface OrderDetailsRepository extends JpaRepository<OrderDetails, Long> {

OrderDetails findFirstByOrderIdOrderByIdDesc(String orderId);
}

这里可能出现什么问题?

PS: 而且,是的,实体中同时存在 orderIdId 字段。

最佳答案

选择@GeneratedValue(strategy = GenerationType.AUTO)时,Hibernate将基于特定于数据库的方言选择一种生成策略。
您的情况的问题是 hibernate 找不到 HIBERNATE_SEQUENCE ,因此无法为序列创建新对象。尝试添加这样的序列,它应该可以解决问题,但可能会导致数据不一致......

CREATE TABLE CUSTOMER(
  id int primary key,
);

CREATE SEQUENCE HIBERNATE_SEQUENCE START WITH 1 INCREMENT BY 1;

我建议使用 GenerationType.SEQUENCE 并尝试使用您的自定义数据库序列重新创建您的 id 模式。您可以阅读有关 GenerationType 的更多信息
here

关于java - 使用 GenerationType.AUTO 未找到用于 h2 测试的序列 "HIBERNATE_SEQUENCE",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51674681/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com