【发布时间】:2019-01-11 11:14:41
【问题描述】:
我正在尝试将我们的一项服务迁移到 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:而且,是的,实体中同时存在 orderId 和 Id 字段。
【问题讨论】:
-
如果换成 GenerationType.IDENTITY 会发生什么?我在这方面比 AUTO 和休眠更幸运。虽然两者都应该可以正常工作。
-
它解决了问题,但对于其余实体来说它是自动的,我希望它们保持一致。
-
也许您可以全面更改政策?
-
嗯,我可以做到,但我有点想弄清楚为什么它在一个地方失败而另一个地方失败。
-
是的,很公平。 thoughts-on-java.org/jpa-generate-primary-keys stackoverflow.com/questions/39807483/… 我认为这些链接提供了一些见解。
标签: java hibernate spring-boot h2