2016-08-01 1 views
0

My Dao 계층은 MySql과 잘 동작합니다. 내가 단위 테스트를 할 때 메모리 데이터베이스 (HSQLDB)에서 데이터를 유지할 수 없다. 내 엔티티는 다음과 같이 정의됩니다.Hibernate Junit hsqldb - (strategy = GenerationType.AUTO) not working

public class Api { 
    @Id 
    @Column(name = "api_id") 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private int apiId; 

이 ID는 자동 생성되지 않습니다. null로서 건네받습니다.

18:05:52.071 [main] DEBUG org.hibernate.SQL - insert into api (api_id, description, version) values (null, ?, ?) 
18:05:52.076 [main] DEBUG o.h.e.jdbc.spi.SqlExceptionHelper - could not prepare statement [insert into api (api_id, description, name) values (null, ?, ?)] 

내 최대 절전 모드 속성은

Properties properties = new Properties(); 
    properties.setProperty(ApiConstants.HIBERNATE_DIALECT, "org.hibernate.dialect.HSQLDialect"); 
    properties.setProperty(ApiConstants.HIBERNATE_DRIVER_CLASS, "org.hsqldb.jdbcDriver"); 
    properties.setProperty(ApiConstants.HIBERNATE_CONN_URL, "jdbc:hsqldb:mem:apicloud"); 
    properties.setProperty(ApiConstants.HIBERNATE_CONN_USER, "sa"); 
    properties.setProperty(ApiConstants.HIBERNATE_CONN_PWD, ""); 
    properties.setProperty("hibernate.archive.autodetection", "class,hbm"); 
    properties.setProperty("hibernate.hbm2ddl.auto", "create-drop"); 
    properties.setProperty("hibernate.show_sql", "true"); 

스키마는 단위 테스트가 트리거 될 때마다 생성됩니다. Create 문은 다음과 같이 발행됩니다.

18:05:51.995 [main] DEBUG org.hibernate.SQL - create table api 
(api_id integer generated by default as identity (start with 1), 
description varchar(255), version varchar(255), primary key (api_id)) 

내가 누락 된 부분이 있으면 알려주십시오.

+0

코드가 올바르게 작동해야합니다. 어떤 버전의 HSQLDB와 Hibernate를 사용하고 있습니까? 또한 org.hibernate에 대한 DEBUG 로깅을 활성화하고 Api 모델에 대한 "CREATE TABLE"문을 찾을 수 있습니까? 열이 "신분"으로 만들어 졌는지 확인해야합니다. 그렇지 않으면 문제가됩니다. –

+0

안녕하세요 .. 응답 주셔서 감사합니다 .. 내 최대 절전 모드 버전은 4.3.6입니다. 최종 버전과 HSQLDB 버전은 2.2.8입니다. 위의 질문에 create table 문을 추가했으며 ID가 생성 된 테이블을 볼 수 있습니다. 여전히 문제가 있습니다. –

답변