2011-06-30 54 views
3

我使用Oracle作爲後端,當我嘗試插入任何條目時,休眠生成的序列的順序是「50010255」,但在我的數據庫中當前值爲SEQ_AD_WORK序列只顯示「1000221」我無法弄清楚如何發生。HiberNate生成的序列值不與數據庫同步

以下是我的配置

<property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.query.startup_check">false</prop> 
      <!-- 
      <prop key="hibernate.hbm2ddl.auto">create</prop> 
      --> 
     </props> 
    </property>` 

    @Id 
@Column(name = "ITEM_ID", unique = true, nullable = false, scale = 0) 
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_AD_WORK") 
@SequenceGenerator(name="SEQ_AD_WORK", sequenceName="SEQ_AD_WORK") 
public Long getAdWorkItemId() { 
    return this.adWorkItemId; 
} 
+0

啓用調試後,我可以看到,hibernate實際上是從數據庫獲取正確的nextval後,通過獲取它轉換爲其他值使用rg.hibernate.id.SequenceHiLoGenerator任何想法爲什麼這種行爲? – dpsdce

回答

5

@Dhirendra:試試這個: -

@SequenceGenerator(NAME = 「SEQ_AD_WORK」,sequenceName = 「SEQ_AD_WORK」 ,, allocationSize = 1)

SequenceHiLoGenerator是JPA的默認序列生成器,默認的allocationSize值爲50,

+0

非常感謝我的工作。只是無法發佈答案,因爲我沒有足夠的聲望發佈:) – dpsdce

+0

非常感謝! –