如何加载Hibernate import.sql?

wil*_*rdy 5 eclipse hibernate

数据库表已成功创建

<property name="hibernate.hbm2ddl.auto" value="create"/>"
Run Code Online (Sandbox Code Playgroud)

在persistence.xml中,但是每次运行我的应用程序时(在Eclipse Helios中),import.sql似乎都没有加载.我的persistence.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/ ... ce_2_0.xsd" version="2.0">
<persistence-unit name="myPersistenceUnit">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create"/>

<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>

<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost/svrmonitor4" />
<property name="hibernate.connection.username" value="username" />
<property name="hibernate.connection.password" value="password" />

</properties>   
</persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

使用import.sql的内容我尝试删除换行符,+没有半冒号";",在命令行上测试SQL(插入语句工作),尝试故意破坏SQL(在控制台上不产生错误).我试过在我的类路径的根目录下放置import.sql,也在META-INF中放置(仍然没有运气).我试过放"USE svrmonitor4;" 在import.sql文件的开头(再次,没有运气).

我在persistence.xml中遗漏了什么?

如果在插入MySQL数据库时遇到错误,报告的错误在哪里?Eclipse控制台或MySQL日志?我还没有看过MySQL日志.

在Eclipse中,我有三个项目,依赖项如下:

项目A(包含启动应用程序的主类) - >项目B - >项目C(包含实体类,persistence.xml)

我尝试将import.sql放在每个项目的类路径中,但没有区别.

wil*_*rdy 4

我通过提高 Log4J 日志记录级别发现了问题,这样我就可以在控制台上看到 Hibernate 的 hbm2ddl 工具的 INFO 消息。import.sql 文件在我的项目的类路径根目录中与 persistence.xml 文件很好,即使它被 eclipse 中的另一个调用项目引用。我添加到 log4j.xml 的相关行:

<logger name="org.hibernate.tool.hbm2ddl" additivity="false">
    <level value="info"/><appender-ref ref="console" /> 
</logger>

<logger name="org.hibernate" additivity="false">
    <level value="warn"/><appender-ref ref="console" /> 
</logger>
Run Code Online (Sandbox Code Playgroud)

这意味着我没有从 Hibernate 获得所有调试信息,仅获得与导入 .import.sql 相关的信息。

使用 Log4j 对此非常有用,因为它可以显示 import.sql 脚本的 SQL 的任何错误

事实证明,我的 SQL“INSERT INTO ...”语句没有按正确顺序排列值(发生这种情况是因为当您从实体类生成表时,表的顺序是按字母顺序排列的,类定义的变量在哪里)按照我的定制订单)。