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
。
发布这个以防对其他人有帮助。
由于升级到 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
。
发布这个以防对其他人有帮助。