2011-01-12 5 views
13

En Hibernate existe la posibilidad de agregar el archivo import.sql en la raíz del classpath, y las expresiones SQL de este archivo se ejecutan en la base de datos cuando se crea la sesión de Hibernate.Cómo descomponer expresiones en más líneas en import.sql de Hibernate?

Sin embargo, Hibernate produce una excepción si alguna expresión se divide en 2 o más líneas. ¿Cómo puedo dividir las expresiones SQL en más líneas?

Respuesta

32

Por el bien de alguien como yo encontrar esto a través de una búsqueda:

Si está utilizando Hibernate4, se puede añadir la siguiente propiedad

<property name="hibernate.hbm2ddl.import_files_sql_extractor" value="org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor" /> 

a su configuración de hibernación (la mía es JPA persistence.xml). Comparar con user manual y este JIRA issue.

Nota que en hibernate.cfg.xml de Hibernate, la especificación no reconoce el atributo value y se debe proporcionar como contenido de texto:

<property name="hibernate.hbm2ddl.import_files_sql_extractor">org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor</property> 

(gracias Daniel Gerber por señalar esto fuera)

+0

Muchas gracias, mabi. Esta debería ser la respuesta aceptada. –

+0

¡Muy bien, funciona como un encanto! – acdcjunior

+0

Esta debería ser la respuesta aceptada. – realcnbs

-2

Use punto y coma; para romper la línea no utilice entrar o \ n

+1

Punto y coma? Semicolon en SQL está al final de la expresión, ¿no es así? Quiero algo diferente, para dividir una sola expresión en muchas líneas. – amorfis

+1

si quiere una sola expresión en muchas líneas, puede usar "enter" y finalizar la expresión con punto y coma. Hibernate's import.sql lo entenderá. solo considera la expresión final cuando se encuentra; –

+4

Mi experiencia muestra que hibernate's import.sql no lo entiende. Trata el final de la línea como el final de la expresión. – amorfis

Cuestiones relacionadas