2017-08-16 154 views
1

我使用hibernate自动生成表的ID,但我需要手动插入一些行(约10K,只是一次)与另一个表有关。我正在使用Oracle DB。我怎样才能做到这一点? hibernate generete值如何?有可能使用它?手动插入时使用休眠@GeneratedValue

@Id 
@GeneratedValue 
private Long id; 

回答

1

当然,这是可能的,我们一直在这样做。是否以及如何取决于您使用的id生成策略以及数据库的设置方式。

我们使用(定制的)表生成器生成积极的ID,所以无论何时我们需要手动插入使用负面ID的元素。这样,这些ID不会干扰Hibernate的ID生成,我们可以立即识别手动插入的行。

如果您不喜欢负面的ID,您可以使用不同的生成策略,例如,

  • 所使用的休眠以及手动插入
  • 高 - 低台发电机id列上的序列(这是我们使用的是什么)设置一些价值较高的初始值较低,而因此基本上保留用于手动插入下层的正的值)
  • 的“分配的” id生成器,即应用程序定义的ID(例如,雇员的雇员-ID),因此你知道哪个ID可以手动添加
+0

好吧,我现在看到,我发现hibernate使用HIBERNATE_SEQUENCE,所以我有两个选择: - 使用HIBERNATE_SEQUENCE - 插入负号ID 我想我会使用HIBERNATE_SEQUENCE,因为我们需要插入大约10k行。谢谢! – user2061066