2017-08-16 155 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