我对 Hibernate 还很陌生,我有以下疑问。
进入名为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 service 类中,我创建了此方法来更新此表的记录:
public void rimettiInLavorazioneProgetto(Twp1007Progetto progetto) {
progettoRepo.save(progetto);
}
其中(Twp1007Progetto progetto 是映射 TWP1007_PROGETTO 表的对象)。
正如您在前面的方法中看到的,我使用 save()
hibernate 方法。
它有效并且记录已正确更新,但这似乎很奇怪,因为根据我的理解,save()
方法必须创建一个新记录,而update()
方法必须更新现有记录。
那么为什么它有效呢?为什么它会正确更新现有记录?
最佳答案
是的。 Save()
当且仅当您的对象没有生成的标识符时,方法才会创建新记录
Persist the given transient instance, first assigning a generated identifier. (Or using the current value of the identifier property if the assigned generator is used.)
如果您已经生成了与您的对象关联的标识符,它只会保存到该行。
关于java - 关于 Hibernate save() 方法的一些说明。为什么要正确更新现有记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33079769/