我知道插件可以在eclipse中生成hibernate pojos和映射配置xml文件。因为使用aanotations的hibernate现在比hibernate xml文件使用得更多,我想知道我们如何为dmd文件中的表生成具有适当关联(OneToOne,OneToMany,ManyToOne,ManyToMany等)的实体类,这可以节省大量的开发工作量100 % 准确性。 因为我们可以使用dmd文件生成具有适当约束/索引等创建的所有数据库脚本。我希望有一种方法来生成实体类。
- 编辑 -
由于我没有找到从dmd文件生成带注释的enities的解决方案,所以想到从dmd文件生成表,然后使用hibernate工具插件来生成至少的实体类。
我可以从dmd文件生成表格。现在在eclipse(Juno)中使用Hibernate工具插件,按照
中编写好的步骤生成实体http://www.mkyong.com/hibernate/how-to-generate-code-with-hibernate-tools/ and
http://www.mkyong.com/hibernate/how-to-install-hibernate-tools-in-eclipse-ide/
点击An internal error occurred during: "Fetching children of Database".
Hibernate code generation --> Run
例外
详细的异常跟踪如下所示。 someoone可以告诉我如何修复此错误并生成文件。
java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
at org.apache.commons.logging.impl.SLF4JLocationAwareLog.debug(SLF4JLocationAwareLog.java:133)
at org.hibernate.cfg.reveng.dialect.OracleMetaDataDialect.getTables(OracleMetaDataDialect.java:218)
at org.hibernate.cfg.reveng.JDBCReader.processTables(JDBCReader.java:476)
at org.hibernate.cfg.reveng.JDBCReader.readDatabaseSchema(JDBCReader.java:74)
at org.hibernate.eclipse.console.workbench.LazyDatabaseSchemaWorkbenchAdapter$2.execute(LazyDatabaseSchemaWorkbenchAdapter.java:126)
at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63)
at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:107)
at org.hibernate.eclipse.console.workbench.LazyDatabaseSchemaWorkbenchAdapter.readDatabaseSchema(LazyDatabaseSchemaWorkbenchAdapter.java:115)
at org.hibernate.eclipse.console.workbench.LazyDatabaseSchemaWorkbenchAdapter.getChildren(LazyDatabaseSchemaWorkbenchAdapter.java:65)
at org.hibernate.eclipse.console.workbench.BasicWorkbenchAdapter.fetchDeferredChildren(BasicWorkbenchAdapter.java:106)
at org.eclipse.ui.progress.DeferredTreeContentManager$1.run(DeferredTreeContentManager.java:235)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)