重复使用生成器名称会发生​​什么副作用?

时间:2014-07-10 15:52:19

标签: java hibernate jpa orm uniqueidentifier

我正在使用几十个表的代码库。我去添加一个新课程,当然,在我开始项目之前,我将会看看已经写完的内容,看看它是如何在那里完成的。关于车轮工程的事情?

无论如何,这就是我找到的

@Id
@SequenceGenerator(name = "identifier", sequenceName = "LIMIT_REASON_COLL_ID_SEQ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "identifier")
@Column(name = "ID")

值得注意的是name = "identifier"generator = "identifier。我没有更换任何东西,这实际上就是它所说的。在Hibernate管理的每个类中都称为"identifier"

现在,该系统已稳定多年,所以很明显它似乎不会影响我们正在做的事情(我们可以观察到)。但是,以这种方式重用生成器名称是否有任何副作用?它是否被建议,如果不是为什么不呢?

2 个答案:

答案 0 :(得分:1)

我认为您将面临与duplicate key violation..或类似问题相关的问题。有一天,在我搜索之前,我收到了这篇文章:JPA 2 @SequenceGenerator @GeneratedValue producing unique constraint violation。请通过问答来解答。

答案 1 :(得分:1)

SequenceGenerator的名称和GeneratedValue的生成器可以是您选择的任何名称。

GeneratedValue的策略引用了一个Hibernate标识符生成器:

  • 增量

  • 身份

  • 序列

  • 希洛

  • seqhilo

  • UUID

  • UUID2

  • GUID

  • 分配

  • 选择

  • 外国

生成器的名称和策略之间没有关联。因此,您可以通过“身份”名称调用序列生成器。