我是Hibernate的新手,問題是「生成器類是否需要Hibernate中的ID標記?」生成器類是否需要Hibernate中的ID標記?
在我的表中有觸發器提及下面和我的表是現有的表和記錄。只是我做了代碼從原生SQL更改爲Hibernate會話。在這種情況下「生成器類是否需要在Hibernate中使用ID標記?」。這裏我的例外是記錄需要插入下一個序列值。
TRIGGER TRG_BI_APPLICATION_DATA_LOCK
BEFORE INSERT
ON APPLICATION_DATA_LOCK REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
exception_no_null_pk EXCEPTION;
BEGIN
IF :new.APP_DATA_LOCK_ID is null
THEN
SELECT SEQ_APPLICATION_DATA_LOCK_PK.nextval
INTO :new.APP_DATA_LOCK_ID
FROM dual;
END IF;
END;
假設在插入調用觸發器之前會創建下一個ID值並插入將會發生。所以,在HBM文件中,我們需要生成器類,或者如果我們需要哪種生成器必須使用的手段? 請幫我在這方面...
謝謝...
根據你的答案,我不需要在hbm文件中使用任何生成的類。寫?但是,沒有提到以下異常:org.hibernate.id.IdentifierGenerationException:在調用save()之前,必須手動分配此類的ids:ApplicationDataLock – Subbu
Ahh,您正在使用hbm文件指定映射嗎?我認爲您不需要包含生成的,因爲您的ID的生成是通過觸發器在數據庫級別發生的。它的有效含義是,如果遇到需要獲取對象ID的情況,則需要將其保存到數據庫,然後查詢數據庫以使對象填充ID。所有休眠需要知道的是,你的對象有一個字段是它的ID,如果你不告訴它,它不關心它是如何生成的。試試吧,讓我知道 – JamesENL
如果你確實想使用你的序列而不使用觸發器,那麼使用你的hbm文件中的鏈接中給出的以下配置。 http://stackoverflow.com/questions/5082175/how-to-use-sequence-in-hibernate-as-a-property-in-xml-mapping – JamesENL