基本的に、すべての拡張エンティティの代理 ID 生成を定義する @MappedSuperclass が必要です。
@MappedSuperclass
public class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;
...
}
EntityA、EntityB、および EntityC の 3 種類の具体的なエンティティがある場合、次のような SEQUENCE_TABLE が必要です。
SEQUENCE_NAME | NEXT_VAL
--------------------------
EntityA 11
EntityB 31
EntityC 101
...各シーケンスは独立しており、対応するエンティティにのみ使用されます。そんなことが DataNucleus を使えば簡単にできるのでしょうか? 理想的には、@Entity ごとに @TableGenerator を宣言することは避けたいと思います。Hibernate は「prefer_sequence_per_entity」プロパティを使用してこの動作を提供しますが、その他のいくつかの機能については DataNucleus を好みます。