hibernate操作數據庫相關注意點

一、建數據表時,若有字段設置了NOTNULL並設置了默認值,如果在程序中相應對象中的字段沒有賦值,是null,在程序執行插入,更新的操作的時候,會拋出不能插入的異常,例如:org.springframework.dao.DataIntegrityViolationException:couldnotinsert:[com.woyo.trade.model.UserOrder];nestedexceptionisorg.hibernate.exception.ConstraintViolationException:couldnotinsert:[com.woyo.trade.model.UserOrder]。

解決方法:使用註解時在類上加上@org.hibernate.annotations.Entity(dynamicUpdate=true,dynamicInsert=true)註解,原先@Entity註解是javax.persistence這個包下的,需要保留


二、使用hibernate時在MySQL中建的表字段不能使用MySQL的保留字,不然用save()插入的時候會報SQL語法錯誤,自己寫SQL可以在字段名上加“`”(tab鍵上面那個鍵)來區分,不然就改字段名吧


三、對於MySQL中日期類型,如果設置了默認值爲“0000-00-00 00:00:00”,如果在插入數據的時候沒有給該字段賦值,在查詢該記錄的時候,會報can not be represented as java.sql.Date的錯,在數據庫連接url後面加上zeroDateTimeBehavior=convertToNull,問題解決

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章