PostgreSQL で Dropwizard と Hibernate を使用して Liquibase を試しているところですが、すべて最新バージョンですが、問題が発生しました。String PK を生成する Hibernate の UUID ジェネレーターをクラス ID に使用するつもりでした。varchar(32)
テーブルで呼び出されるフィールドが必要だと指定しましたが、代わりにid
Liquidbase がbigint
フィールドを生成しました。しかし興味深いことに、2 つのテーブルは異なる列portfolio.id
を持っportfolio_id_seq
ています。
私は何か間違ったことをしましたか、それとも Liquibase の ID 列の奇妙なプロパティですか? sを使用する必要がありbigint
ますか? 以下のコード:
migrations.xml:
<changeSet id="1" author="orlade">
<createTable tableName="stock">
<column name="id" type="varchar(255)">
<constraints primaryKey="true" nullable="false" />
</column>
<column name="name" type="varchar(255)">
<constraints nullable="false" />
</column>
<column name="symbol" type="varchar(255)">
<constraints nullable="false" />
</column>
<column name="description" type="varchar(255)" />
</createTable>
<createTable tableName="portfolio">
<column name="id" type="varchar(255)">
<constraints primaryKey="true" nullable="false" />
</column>
<column name="name" type="varchar(255)">
<constraints nullable="false" />
</column>
<column name="description" type="varchar(255)" />
</createTable>
</changeSet>
Portfolio.java:
@Entity
@Table(name = "portfolio")
public class Portfolio {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String id;
}
Stock.java:
@Entity
@Table(name = "stock")
public class Stock {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String id;
}