我正在使用几十个表的代码库。我去添加一个新课程,当然,在我开始项目之前,我将会看看已经写完的内容,看看它是如何在那里完成的。关于车轮工程的事情?
无论如何,这就是我找到的
@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"
。
现在,该系统已稳定多年,所以很明显它似乎不会影响我们正在做的事情(我们可以观察到)。但是,以这种方式重用生成器名称是否有任何副作用?它是否被建议,如果不是为什么不呢?
答案 0 :(得分:1)
我认为您将面临与duplicate key violation..
或类似问题相关的问题。有一天,在我搜索之前,我收到了这篇文章:JPA 2 @SequenceGenerator @GeneratedValue producing unique constraint violation。请通过问答来解答。
答案 1 :(得分:1)
SequenceGenerator的名称和GeneratedValue的生成器可以是您选择的任何名称。
GeneratedValue的策略引用了一个Hibernate标识符生成器:
增量
身份
序列
希洛
seqhilo
UUID
UUID2
GUID
分配
选择
外国
生成器的名称和策略之间没有关联。因此,您可以通过“身份”名称调用序列生成器。