如何在 Spring 中为所有实体使用自定义 SequenceGenerator for Hibernate?

How to use a custom SequenceGenerator for Hibernate in Spring for all entities?

我已经实现了自定义 SequenceGenerator,我想在 "id" 的所有实体中使用它。但是不必为 each 实体做类似 this 的事情:

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "XyzIdGenerator")
@GenericGenerator(name = "XyzIdGenerator",
        strategy = "com.mycompany.myapp.id.BigIntegerSequenceGenerator",
        parameters = {
            @Parameter(name = "sequence", value = "xyz_id_sequence")
        })
public BigInteger getId()
{
   return id;
}

有没有办法默认使用 vanilla Hibernate/JPA 或使用 Spring 将此 SequenceGenerator 应用于所有实体?

只需将代码段移动到一个超级class,添加@MappedSuperclass。但是,在那种情况下,您所有的实体都将使用相同的序列生成器

@MappedSuperclass
public class SeqIdable implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "XyzIdGenerator")
    @GenericGenerator(
    name = "XyzIdGenerator",
    strategy = "com.mycompany.myapp.id.BigIntegerSequenceGenerator",
    parameters = {
        @Parameter(name = "sequence", value = "xyz_id_sequence")
    })
    public BigInteger getId() {
       return id;
    }

}