为什么@SequenceGenerator有一个名字?

时间:2011-02-28 12:23:45

标签: java hibernate

javadoc说

  

可以是唯一的生成器名称   由一个或多个类引用   是主键的生成器   值

但是它的注释放在@Entity之上,所以我不理解这个推理。

我可以在其他@Entity中定义的@Entity @SequenceGenerator中使用吗?

2 个答案:

答案 0 :(得分:6)

这个想法是多个实体可能想要共享密钥空间。

例如,如果您有两个实体FooBar,则您希望避免同时具有ID为1的Foo和ID为1的Bar。这样做是为name注释指定相同的@SequenceGenerator

答案 1 :(得分:0)

在@GeneratedValue注释中使用生成器时,请按名称引用它。这就是使用该名称的原因。序列生成器可以在GeneratedValue注释中声明,但是他们另有决定。它使您可以在多个字段上使用相同的Generator,甚至可以在实体之间共享它们。当你不使用这个功能时,它当然是一些开销。