JavaDoc for をTableGenerator
チェックしてください。それがどのように機能するかの良い例があります:
例 1:
@Entity public class Employee {
...
@TableGenerator(
name="empGen",
table="ID_GEN",
pkColumnName="GEN_KEY",
valueColumnName="GEN_VALUE",
pkColumnValue="EMP_ID",
allocationSize=1)
@Id
@GeneratedValue(strategy=TABLE, generator="empGen")
int id;
...
}
例 2:
@Entity public class Address {
...
@TableGenerator(
name="addressGen",
table="ID_GEN",
pkColumnName="GEN_KEY",
valueColumnName="GEN_VALUE",
pkColumnValue="ADDR_ID")
@Id
@GeneratedValue(strategy=TABLE, generator="addressGen")
int id;
...
}
基本的ID_GEN
には、キーと値のペアの内部 (非ビジネス) テーブルです。JPA が ID を生成するたびに、そのデータベースにクエリを実行します。
SELECT GEN_VALUE
FROM ID_GEN
WHERE GEN_KEY = ...
列をインクリメントしGEN_VALUE
ます。このメカニズムを使用して、シーケンスをエミュレートしたり、生成された ID をさらに制御したりできます。