W projekcie Java pracuję nad Mam następujące ustawienia dla testów jednostkowych:Jak mogę debugować przetwarzanie wartości hibernate.hbm2ddl.import_files w połączeniu z hsqldb?
- Używam Wiosna testową MVC
@RunWith(SpringJUnit4ClassRunner.class)
i@WebAppConfiguration
do uruchamiania testów jednostkowych i tworzęMockMvc
wystąpienie przy użyciuwebAppContextSetup(webApplicationContext)
do przetestowania aplikacji. - Mam konfigurację Hibernate do ustawienia HSQLDB w pamięci, wszystkie tabele są tworzone na podstawie klas @Entity.
- W konfiguracji hibernacji ustawiam właściwość
hibernate.hbm2ddl.import_files
, aby załadować plikimport.sql
z instrukcjami SQL, aby zapełnić bazę danych (w pamięci).
Teraz mam potwierdziła wszystkie te powyższe prace:
- Testy mogą z powodzeniem wstawić/pobrać z DB w pamięci.
- Instrukcje SQL w
import.sql
są wykonywane, jak potwierdzają różne testy.
Teraz problemem: Błędy występujące ze sprawozdania dodam w import.sql
nie wydają się być zgłaszane w dowolnym miejscu, nie jest jakąś wskazówką ponieważ wystąpił błąd w ogóle. Zamiast tego kolejne instrukcje nie są po prostu wykonywane. (Potwierdziłem to poprzez testowanie.)
Czy jest jakiś sposób lub miejsce tych błędów są zgłoszone, że jestem najwyraźniej nieświadomy? Czy jest do tego dodatkowa właściwość Hibernuj?
Fragment z testu hibernacji 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>
Dzięki za oferowanie tej alternatywy. Kiedy go zaimplementuję, pojawia się błąd dotyczący nieistnienia używanej tabeli. Czy to możliwe, że ta metoda wykonuje import.sql przed hibernowaniem, automatycznie tworząc tabele? –
Tak, dodać zależy od hibernacji sessionFactory. W mojej próbce Spring tworzy i upuszcza tabele bezpośrednio w SQL – hoaz
Niestety utknąłem z koniecznością automatycznego tworzenia Hibernacji tutaj ... Mimo to jednak, wszelkie dalsze sugestie są mile widziane! –