如何在 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;
}
}
我已经实现了自定义 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;
}
}