2015-10-12 47 views
0

我在Hibernate中很新,我有以下疑問。關於Hibernate save()方法的一些說明。爲什麼要正確更新現有記錄?

到數據庫表名爲TWP1007_PROGETTO我此行(但內容並不重要,在這個時候):

PRG_PRO COD_MEC_ATT DAT_ANN_SCO_ATT COD_MEC_INI_PRO COD_PRO IMP_FIN COD_TIP_STA FLG_TIP_PRG PRG_GRA_WIF PRG_GRA_PNS FLG_PRE_FIR_DIR FLG_PRE_FIR_REV DAT_INS_REN DESC_NOM_FIL_REN OGG_FIL_REN DAT_VAL DES_NOT_VAL DAT_TRA_UFF_LIQ IMP_TOT_SPE IMP_SAL DES_NOM_UTE_VAL DES_NOM_DIR_REN DAT_ORA_ULT_MOV COD_PGM_ULT_MOV COD_UTE_ULT_MOV 
2 AGIS018009 201516 AGIS018009 Progetto Wifi 7980,00 4 W 2        null     12/10/2015 00:00:00 Rimesso in lavorazione user.name 

然後,在Spring MVC 服務類,我創建這個方法更新此表的記錄:

public void rimettiInLavorazioneProgetto(Twp1007Progetto progetto) { 
    progettoRepo.save(progetto); 
} 

凡(Twp1007Progetto p rogetto是映射表TWP1007_PROGETTO表的對象。

因此,您可以在前面的方法中看到我使用save() hibernate方法。

它的工作原理,並記錄被正確地更新,但它似乎很奇怪,因爲我得從什麼瞭解保存()方法必須創建一個新的記錄,而更新()方法需要更新現有記錄。

那麼爲什麼它的作品?爲什麼它正確更新現有記錄?

Tnx

回答

1

是的。 Save()方法創建新記錄當且僅當您的對象沒有生成標識符時

保留給定的瞬態實例,首先分配生成的標識符。 (或者使用標識屬性的當前值,如果使用指定的發電機。

如果已經生成標識與對象相關聯的,它只是保存到該行。

相關問題