hibernate.globally_quoted_identifiers=真正突破了与 H2 内存数据库的集成测试。 Table 未找到

hibernate.globally_quoted_identifiers=true breaking integration tests with H2 in-memory DB. Table not found

由于升级到 MySQL 8.0 版,我的一些表的名称现在是保留字。因此,我添加了 属性 hibernate.globally_quoted_identifiers=true。这已经解决了这个问题,但它破坏了我使用 H2 作为内存数据库的集成测试。 我正在使用 Hibernate 来持久化 JPA 实体,并使用 Spring 的 TestEntityManager 来管理测试期间与数据库的交互。 我得到的错误是

2020-10-08 10:08:38  WARN [o.h.e.j.s.SqlExceptionHelper]: SQL Error: 42102, SQLState: 42S02
2020-10-08 10:08:38  ERROR [o.h.e.j.s.SqlExceptionHelper]: Table "CALCULATION" not found; 
SQL statement: insert into `calculation` (.....)

这是我的 H2 url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;LOCK_TIMEOUT=10000;MVCC=true;

我尝试将 ;DATABASE_TO_UPPER=false 添加到 url。

这是我的 JPA 实体的片段

@Entity
@Table(name = "calculation")
public class Calculation extends BaseEntity<Long> implements Serializable

有什么想法吗??

已解决。这可能不适用于所有人,但我必须添加 hibernate.globally_quoted_identifiers_skip_column_definitions = true。 发布这个以防对其他人有帮助。