Hibernate模式从命令行导出

cclgggtu  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(173)

我是第一次使用Hibernate,一直在尝试从命令行(Windows)运行SchemaExport hdm2ddl工具,如下所示:java -cp "lib/*" org.hibernate.tool.hbm2ddl.SchemaExport --config=src/hibernate.cfg.xml --create src/hello/Message.hbm.xml
我的目录结构如下:

- HelloWorld
    - bin
    - lib (all of the required jars - list omitted for brevity)
    - src
        - hello (HelloWorld.java, Message.java & Message.hbm.xml)
        - persistence (HibernateUtil.java)
        - hibernate.cfg.xml
        - log4j.properties

尝试运行该命令会产生以下错误:

log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
org.hibernate.internal.util.config.ConfigurationException: Could not locate cfg.xml resource [src/hibernate.cfg.xml]
        at org.hibernate.boot.cfgxml.internal.ConfigLoader.loadConfigXmlResource(ConfigLoader.java:53)
        at org.hibernate.boot.registry.StandardServiceRegistryBuilder.configure(StandardServiceRegistryBuilder.java:163)
        at org.hibernate.tool.hbm2ddl.SchemaExport.buildStandardServiceRegistry(SchemaExport.java:579)
        at org.hibernate.tool.hbm2ddl.SchemaExport.main(SchemaExport.java:546)

我的研究到目前为止:
1.命令找不到hibernate.cfg.xml文件。将命令中文件的拼写更改为错误的拼写也会产生相同的错误。
1.已将cfg.xml文件复制到classpath(lib)和HelloWorld目录中。错误仍然存在。
这基本上是“使用Hibernate的Java持久性”中的示例,但从命令行运行它,而不是使用ant。

q7solyqu

q7solyqu1#

Hibernate似乎在类路径根文件夹中查找“hib. cfg.xml”文件。您可以尝试以下操作:
1.将“hibernate.cfg.xml“文件复制到当前文件夹(运行java ...命令的位置)
1.将当前文件夹(“.”)添加到类路径。(注意:您还需要添加类路径分隔符字符。在Linux上为“:”,在Windows上为“;”)
因此,最后的命令(在Linux上)应该是:

java -cp ".:lib/*" org.hibernate.tool.hbm2ddl.SchemaExport --config=hibernate.cfg.xml --create src/hello/Message.hbm.xml

相关问题