2011-01-12 10 views
13

In Hibernate esiste la possibilità di aggiungere il file import.sql nella root di classpath e le espressioni SQL da questo file vengono eseguite sul database quando viene creata la sessione di Hibernate.Come suddividere l'espressione in più righe in import.sql di Hibernate?

Tuttavia, Hibernate genera un'eccezione se alcune espressioni sono suddivise in 2 o più righe. Come posso interrompere le espressioni SQL su più righe?

risposta

32

Per il bene di chi, come me trovare questo attraverso una ricerca:

Se stai usando Hibernate4, è possibile aggiungere la seguente proprietà

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

alla configurazione di ibernazione (il mio è JPA persistence.xml). Confronta con user manual e questo JIRA issue.

Nota che nel hibernate.cfg.xml di Hibernate, la specifica non riconosce l'attributo value e si dovrebbe fornire come contenuto del testo:

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

(grazie Daniel Gerber per la precisazione out)

+0

Grazie mille, mabi. Questa dovrebbe essere la risposta accettata. –

+0

Molto buono, funziona come un fascino! – acdcjunior

+0

Questa dovrebbe essere la risposta accettata. – realcnbs

-2

Utilizzare il punto e virgola; a rompere la linea di non utilizzare entrare o \ n

+1

Punto e virgola? Il punto e virgola in SQL è alla fine dell'espressione, non è vero? Voglio qualcosa di diverso, per rompere la singola espressione in molte linee. – amorfis

+1

se si desidera un'espressione singola in più righe, è possibile utilizzare "invio" e terminare l'espressione con punto e virgola. Hibernate's import.sql lo capirà. considera solo l'espressione fine quando incontra; –

+4

La mia esperienza mostra che import.sql di ibernazione non lo capisce. Tratta fine riga come fine dell'espressione. – amorfis

Problemi correlati