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))
내가 누락 된 부분이 있으면 알려주십시오.
코드가 올바르게 작동해야합니다. 어떤 버전의 HSQLDB와 Hibernate를 사용하고 있습니까? 또한 org.hibernate에 대한 DEBUG 로깅을 활성화하고 Api 모델에 대한 "CREATE TABLE"문을 찾을 수 있습니까? 열이 "신분"으로 만들어 졌는지 확인해야합니다. 그렇지 않으면 문제가됩니다. –
안녕하세요 .. 응답 주셔서 감사합니다 .. 내 최대 절전 모드 버전은 4.3.6입니다. 최종 버전과 HSQLDB 버전은 2.2.8입니다. 위의 질문에 create table 문을 추가했으며 ID가 생성 된 테이블을 볼 수 있습니다. 여전히 문제가 있습니다. –