In un progetto Java su cui sto lavorando io ho la seguente configurazione per i nostri test unitari:Come posso eseguire il debug dell'elaborazione del valore hibernate.hbm2ddl.import_files combinato con hsqldb?
- sto usando Primavera test MVC,
@RunWith(SpringJUnit4ClassRunner.class)
e@WebAppConfiguration
per eseguire i test di unità, e creo un IstanzaMockMvc
utilizzandowebAppContextSetup(webApplicationContext)
per testare l'applicazione. - Ho una configurazione Hibernate per configurare un HSQLDB in memoria, tutte le tabelle sono create in base alle classi @Entity.
- Nella configurazione di Hibernate, sto impostando la proprietà
hibernate.hbm2ddl.import_files
per caricare un fileimport.sql
con istruzioni SQL per popolare il database (in memoria).
Ora, ho confermato tutti questi sopra lavoro:
- I test possono inserire/recuperare dal DB in memoria con successo.
- Le istruzioni SQL nel numero
import.sql
vengono eseguite, come confermano vari test.
Ora il problema : Gli errori che si verificano con le dichiarazioni aggiungo in import.sql
non sembrano essere segnalato da nessuna parte, nessuno dei due è alcuna indicazione, dato che si è verificato un errore a tutti. Invece, le dichiarazioni successive non sono semplicemente eseguite. (Ho confermato questo attraverso test.)
C'è qualche modo o luogo questi errori sono segnalato che sono apparentemente inconsapevole di? C'è una proprietà aggiuntiva di Hibernate per questo?
Estratto dal test di ibernazione config:
<bean id="sessionFactory" name="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.archive.autodetection">class,hbm</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</prop>
<prop key="hibernate.connection.username">sa</prop>
<prop key="hibernate.connection.password"></prop>
<prop key="hibernate.connection.url">jdbc:hsqldb:mem:myschema</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.hbm2ddl.import_files">configuration/test/import.sql</prop>
<prop key="hibernate.hbm2ddl.import_files_sql_extractor">org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor</prop>
<!-- when using type="yes_no" for booleans, the line below allow booleans in HQL expressions: -->
<prop key="hibernate.query.substitutions">true 'Y', false 'N'</prop>
</props>
</property>
</bean>
Grazie per l'offerta di questa alternativa. Quando lo implemento si verifica un errore relativo alla non esistenza di una tabella utilizzata. Potrebbe essere che questo metodo esegua import.sql prima che Hibernate crei automaticamente le tabelle? –
Sì, l'aggiunta dipende dalla sospensione sessionFactory. Nel mio esempio Spring crea e rilascia tabelle direttamente in SQL – hoaz
Sfortunatamente sono bloccato a dover utilizzare la creazione automatica di Hibernate qui ... Grazie comunque, ogni ulteriore suggerimento è benvenuto! –