我的工具 - > Java 8,JPA 2.1和Hibernate 4.我只使用JPA2.1注释。
停靠栏中的代码 - >
@Entity
@Table(indexes = { @Index(name = INDEX_PK, columnList = ID) })
public class Invoice {
@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = DEF_GEN_NAME)
@SequenceGenerator(sequenceName = DEF_SEQUENCE_NAME, name = DEF_GEN_NAME, allocationSize =
ALLOCATION_SIZE)
@Column(name = ID)
private Long id = 0L;
}
当Hibernate创建schemma时(hbm2ddl =“create-drop”),我收到以下Oracle错误:
Hibernate: create index INVOICE_ID_PK on Invoice (ID)
sep 14, 2014 7:00:53 AM org.hibernate.tool.hbm2ddl.SchemaExport perform
ERROR: HHH000389: Unsuccessful: create index INVOICE_ID_PK on Invoice (ID)
sep 14, 2014 7:00:53 AM org.hibernate.tool.hbm2ddl.SchemaExport perform
ERROR: ORA-01408: such column list already indexed
搜索这个问题y发现主键上的索引是默认由Oracle自己生成的,Hibernate并不知道这种行为,事实是hibernate首先创建表Invoice,所以Oracle自动创建一个名为sysXXX的索引(例如:SYS_C0011010) for tha on table Invoice。
在创建所有表之后,Hibernate开始创建索引,然后Oracle为
会抛出错误
复制相同列ID的索引
有没有办法改变这种行为,以便在Hibernate的同一个SQL语句中创建索引和表?任何一个小问题?
谢谢!