프로덕션 환경에서 Oracle 데이터베이스 (12c)가 사용되고 테스트 사례로 HSQLDB (메모리)가 사용되는 설치가 있습니다. 나는 데이터베이스를 업데이트하기 위해 Liquibase를 사용한다.HSQLDB에서 JPA2를 사용하는 자동 신원 생성과 관련된 문제
@Entity
@Table(name = "SYSTEM")
public class System {
@ApiModelProperty(hidden = true)
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", columnDefinition = "BIGINT")
private Long id;
@NotNull
@Size(max = 40)
@Column(name = "NAME", columnDefinition = "NVARCHAR2")
private String name;
@Size(max = 16)
@GeneratedValue
@Column(name = "TOKEN", columnDefinition = "VARBINARY")
private UUID token;
}
내가이 테이블에 사용하는 Liquibase 정의는 다음과 같습니다 :
나는 다음과 같은 클래스가
"createTable": {
"tableName": "SYSTEM",
"columns": [
{
"column": {
"name": "ID",
"type": "BIGINT",
"autoIncrement": true,
"constraints": {
"primaryKey": true
}
}
},
{
"column": {
"name": "NAME",
"type": "VARCHAR2(40)",
"constraints": {
"nullable": false
}
}
},
{
"column": {
"name": "TOKEN",
"type": "RAW(16)",
"constraints": {
"nullable": false
}
}
}
]
}
오라클 데이터베이스에서이 작품을 EntityManager.persist을 사용하여 새로운 시스템을 구축 . 행이 데이터베이스에 삽입되고 ID 필드가 예상대로 값으로 채워집니다.
HSQLDB 데이터베이스에서 이것은 발생하지 않습니다. 그리고 저에게는 자동 생성이 실행되지 않는 것처럼 보입니다. 시스템 테이블을 만들 HSQLDB에 의해 실행
는 SQL은 다음과 같습니다
CREATE TABLE PUBLIC."SYSTEM" (ID BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL, NAME VARCHAR2(40) NOT NULL, TOKEN RAW(16) NOT NULL, CONSTRAINT PK_SYSTEM PRIMARY KEY (ID))
HSQLDB에서 알고있는 버그가 아니면 내가 뭔가 잘못하고있는 중이 야?
버그가있는 경우 _h2 database_가 대신 사용할 수 있습니다 - w.r.t. 리퀴베이스. 오라클 호환 모드도 있습니다. –
버그이거나 해결책을 찾을 수없는 경우 h2를 시도 할 것입니다. 제안 해 주셔서 감사합니다. – jkc