【发布时间】:2015-11-18 20:38:34
【问题描述】:
我对 h2 数据库中索引名称的唯一性有一个小问题。使用 mysql/mariadb 可以同时为表 A 和表 B 定义名为“X”的索引。使用 h2 数据库是不可能的,因为每个数据库的索引名称应该是唯一的。
这对我来说是个问题,因为我有一个定义了以下属性的基本 JPA 实体类:
@org.hibernate.annotations.Index(name = "X")
protected String x;
它被A类和B类继承,B类的索引创建失败,错误如下:
ERROR [main] o.h.tool.hbm2ddl.SchemaUpdate - HHH000388: Unsuccessful: create index X on B(x)
ERROR [main] o.h.tool.hbm2ddl.SchemaUpdate - Index "X" already exists
是否可以告诉 hibernate 自动创建索引名或以某种方式为 H2 创建一个适配器,该适配器将在此类索引名前加上表名?
【问题讨论】:
-
看来你运气不好。我也会小心将索引定义为注释。它们更容易分开处理。