我注释了一堆POJO,以便JPA可以使用它们在Hibernate中创建表。似乎所有表都被创建,除了一个非常中央的表,称为“修订”。Revision类具有@Entity(name="RevisionT")注释,因此它将被重命名为RevisionT,因此与MySQL(目标数据库)中的任何保留字都没有冲突。
@Entity(name="RevisionT")
我删除整个数据库,重新创建它,然后基本上打开和关闭JPA会话。似乎可以毫无问题地重新创建所有表。
为什么在创建的架构中缺少单个表?可以使用哪种工具查看Hibernate产生了什么以及哪些错误?
谢谢。
更新:我尝试创建为Derby DB,并且成功。但是,其中一个字段的名称为“ index”。我@org.hibernate.annotations.IndexColumn用来指定名称而不是保留字。但是,创建该列时始终将其称为“索引”。
@org.hibernate.annotations.IndexColumn
这是可疑注释的示例。
@ManyToOne @JoinColumn(name="MasterTopID") @IndexColumn(name="Cx3tHApe") protected MasterTop masterTop;
而不是创建MasterTop.Cx3tHApe为字段,而是创建MasterTop.Index。为什么忽略该名称?
MasterTop.Cx3tHApe
MasterTop.Index
回答您的附加问题(可以使用哪种仪器查看Hibernate产生了什么以及哪些错误?)
您可以org.hibernate.tool.hbm2ddl.SchemaExport生成表。
org.hibernate.tool.hbm2ddl.SchemaExport
AnnotationConfiguration conf = (new AnnotationConfiguration()).configure(); new SchemaExport(conf).create(showHql, run);
第一个参数使您可以查看此命令生成的HQL CREATE TABLE。第二个是它是否应该实际执行任何修改(即false =空运行)。
CREATE TABLE
因此,与之一起运行(true, false)将完全向您展示Hibernate对表的处理方式,而无需进行任何更改。
(true, false)