java – 表不是由Hibernate创建的

我注释了一堆POJO,因此JPA可以使用它们在Hibernate中创建表.似乎除了一个名为“Revision”的非常中心的表外,所有表都被创建. Revision类有一个@Entity(name =“RevisionT”)注释,因此它将被重命名为RevisionT,因此不会与MySQL(目标数据库)中的任何保留字冲突.

我删除整个数据库,重新创建它,基本上打开和关闭JPA会话.所有的表似乎都没有问题地重新创建.

为什么创建的模式中缺少单个表?可以使用什么样的工具来查看Hibernate产生的内容以及哪些错误?

谢谢.

更新:我尝试创建一个Derby DB并且它成功了.但是,其中一个字段的名称为“index”.我使用@ org.hibernate.annotations.IndexColumn指定除保留字以外的名称.但是,该列在创建时始终称为“索引”.

这是可疑注释的示例.


    @ManyToOne
    @JoinColumn(name="MasterTopID")
    @IndexColumn(name="Cx3tHApe")
    protected MasterTop masterTop;

它不是将MasterTop.Cx3tHApe创建为字段,而是创建MasterTop.Index.为什么这个名字被忽略了?

最佳答案
回答你的问题(可以用什么工具来看看Hibernate产生了什么以及哪些错误?)

您可以使用org.hibernate.tool.hbm2ddl.SchemaExport来生成表.

AnnotationConfiguration conf = (new AnnotationConfiguration()).configure();
new SchemaExport(conf).create(showHql, run);

第一个参数允许您查看此命令生成的HQL(CREATE TABLEs等).第二个是它是否应该实际执行任何修改(即假=干运行).

因此,使用(true,false)运行它将显示Hibernate将对您的表做什么,而不会更改任何内容.

转载注明原文:java – 表不是由Hibernate创建的 - 代码日志