Oracleデータベース(12c)が本番環境で使用され、HSQLDB(メモリ内)がテストケースで使用される設定があります。私はデータベースを更新するためにLiquibaseを使用します。HSQLDBでJPA2を使用した自動ID生成に関する問題
@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
}
}
}
]
}
Oracleデータベース上でこの作品を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データベース_が代わりになります - w.r.t. Liquibase。オラクルの互換モードもあります。 –
バグか解決策が見つからない場合はh2を試してみます。提案していただきありがとうございます。 – jkc