2011-03-29 8 views
5

tablas de bases de datos se crean con éxito por¿Cómo obtengo la carga de Hibernate import.sql?

<property name="hibernate.hbm2ddl.auto" value="create"/>" 

en persistence.xml, sin embargo, cada vez que funciono mi solicitud (dentro de Eclipse Helios), el import.sql no parece ser la carga. Mi archivo 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> 

con el contenido de import.sql He intentado quitar saltos de línea, con + sin punto y coma ";", probó el SQL en la línea de comandos (las instrucciones de inserción trabajan), intentó SQL intencionalmente roto (no produce errores en la consola). He intentado colocar import.sql en la raíz de mi classpath, y también en META-INF (aún sin suerte). He intentado poner "USE svrmonitor4;" al comienzo del archivo import.sql (de nuevo, sin suerte).

¿Falta algo en persistence.xml?

Si se encontraron errores al insertar en la base de datos MySQL, ¿dónde se informan los errores? Consola Eclipse, o registros de MySQL? No he visto los registros de MySQL todavía.

En Eclipse tengo tres proyectos, con las dependencias de la siguiente manera:

Proyecto A (contiene la clase principal a partir del cual se inicia la aplicación) -> Proyecto B -> Proyecto C (contiene Entidad clases, persistencia. xml)

He intentado colocar import.sql en el classpath de cada uno de estos proyectos, pero no hace la diferencia.

Respuesta

4

Encontré el problema al aumentar el nivel de registro Log4J, de modo que podía ver los mensajes INFO de la herramienta hbm2ddl de Hibernate en la consola. El archivo import.sql estaba bien en la raíz del classpath de mi proyecto con el archivo persistence.xml, aunque fue referenciado por otro proyecto invocado dentro de eclipse. Las líneas relevantes que he añadido a mi 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> 

Esto significaba que no he tenido toda la información de depuración de hibernación, sólo eso relevante para la importación de .import.sql.

Usando Log4j es muy útil para esto porque me muestra ningún error con el código SQL del script import.sql

Al final resultó que, mi SQL "INSERT INTO ..." comunicado no tienen la valores en el orden correcto (esto sucedió porque cuando genera tablas de clases de entidad, el orden de las tablas es alfabético, donde están las clases variables definidas en mi orden personalizado).

4

El aumento del nivel de registro Log4J no me ayuda, pero:

Cuando HibernateJpaVendorAdapter se configura con generateDdl = "true" el valor de hibernate.hbm2ddl.auto está ajustado a "actualizar", anulando valor real especificado en persistence.xml.

Mi archivo import.sql no se ha cargado y esto me ha causado horas de dolor de cabeza.


ver esto desde: Springs Source

Cuestiones relacionadas