Use*_*er1 4 java mysql hibernate jpa
我注释了一堆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;
Run Code Online (Sandbox Code Playgroud)
MasterTop.Cx3tHApe它创造了而不是创建一个领域MasterTop.Index.为什么这个名字被忽略了?
回答你的问题(可以用什么工具来看看Hibernate产生了什么以及哪些错误?)
您可以org.hibernate.tool.hbm2ddl.SchemaExport生成表格.
AnnotationConfiguration conf = (new AnnotationConfiguration()).configure();
new SchemaExport(conf).create(showHql, run);
Run Code Online (Sandbox Code Playgroud)
第一个参数允许您查看此命令生成的HQL(CREATE TABLEs等).第二个是它是否应该实际执行任何修改(即假=干运行).
因此,运行它将(true, false)显示Hibernate将对您的表做什么,而不会更改任何内容.
如果这有助于任何人,今天发生在我身上,事实证明我在我的实体定义中使用了保留字:
@OneToMany(mappedBy="list")
@OrderColumn(name="order")
private List<Wish> wishes;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,"顺序",Hibernate刚跳过这个类.所以检查用户定义的名称!:)
干杯,马克
| 归档时间: |
|
| 查看次数: |
13160 次 |
| 最近记录: |