Trong một dự án Java Tôi đang làm việc trên tôi đã có những thiết lập sau cho unit tests:Làm cách nào để gỡ lỗi xử lý giá trị hibernate.hbm2ddl.import_files được kết hợp với hsqldb?
- Tôi đang sử dụng Spring MVC thử nghiệm,
@RunWith(SpringJUnit4ClassRunner.class)
và@WebAppConfiguration
để chạy các bài kiểm tra đơn vị, và tôi có thể tạo mộtMockMvc
thể hiện bằng cách sử dụngwebAppContextSetup(webApplicationContext)
để kiểm tra ứng dụng. - Tôi có cấu hình Hibernate để thiết lập HSQLDB trong bộ nhớ, tất cả các bảng được tạo dựa trên các lớp @Entity.
- Trong cấu hình Hibernate, tôi đang đặt thuộc tính
hibernate.hbm2ddl.import_files
để tải tệpimport.sql
bằng câu lệnh SQL để điền cơ sở dữ liệu (trong bộ nhớ).
Bây giờ, tôi đã xác nhận tất cả những công việc trên:
- Các xét nghiệm có thể chèn thành công/lấy từ DB trong bộ nhớ.
- Các câu lệnh SQL trong
import.sql
được thực thi, vì các thử nghiệm khác nhau xác nhận.
Bây giờ vấn đề: Lỗi xảy ra với tuyên bố tôi thêm trong import.sql
dường như không được báo cáo ở bất cứ đâu, không phải là bất kỳ dấu hiệu cho rằng một lỗi xảy ra ở tất cả. Thay vào đó, các câu lệnh tiếp theo chỉ đơn giản là không được thực hiện. (Tôi đã xác nhận điều này thông qua thử nghiệm.)
Có cách nào hoặc đặt các lỗi này là báo cáo rằng tôi dường như không biết? Có một tài sản Hibernate bổ sung cho điều này?
Trích từ bài kiểm tra Hibernate cấu hình:
<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>
Cám ơn cung cấp thay thế này. Khi tôi thực hiện nó một lỗi xảy ra liên quan đến sự tồn tại của một bảng được sử dụng. Nó có thể được rằng phương pháp này thực hiện import.sql trước khi Hibernate tự động tạo ra các bảng? –
Có, thêm phụ thuộc vào sessionFactory ngủ đông. Trong mẫu của tôi mùa xuân tạo ra và giảm bảng trực tiếp trong SQL – hoaz
Thật không may tôi đang mắc kẹt với việc phải sử dụng tự động tạo của Hibernate ở đây ... Cảm ơn anyways mặc dù, bất kỳ đề xuất thêm được hoan nghênh! –