解決Hibernate4執(zhí)行save()或update()無效問題的方法
最近在寫網(wǎng)上商城項目時,遇到一個問題:Hibernate在執(zhí)行save()或者update()方法后,并沒有任何效果,數(shù)據(jù)庫中沒有任何改動,而且控制臺也沒有報任何錯,這讓我很無語……
我在網(wǎng)上查了下,有的人說是主鍵的自增長問題,有的人說是沒有開啟事務(wù),所以無法寫入或更新數(shù)據(jù)庫,我詳細(xì)看了他們的分析,說的都有道理,但是這些解決方法對我都不管用,因為我的主鍵是沒有問題的,事務(wù)是由Spring管理的,在其他save操作都可以,都沒有問題。
既然客觀上都沒有問題,于是我把焦點放在了具體要save或update的對象上了,對POJO做了仔細(xì)的分析,首先看一下我要save的對象對應(yīng)數(shù)據(jù)庫中的表:
/*=============================*/ /* Table: 商品表結(jié)構(gòu) */ /*=============================*/ create table product ( /* 商品編號,自動增長 */ id int primary key not null auto_increment, /* 商品名稱 */ name varchar(50), /* 商品價格 */ price decimal(8,2), /* 商品圖片 */ pic varchar(300), /* 商品簡單介紹 */ remark longtext, /* 商品詳細(xì)介紹 */ xremark longtext, /* 商品生產(chǎn)日期 */ date timestamp default CURRENT_TIMESTAMP, /* 是否為推薦商品,推薦商品才有可能顯示在商城首頁 */ commend bool, /* 是否為有效商品,有效商品才有可能顯示在商城首頁 */ open bool, /* 商品所在的類別編號*/ cid int, constraint cid_FK foreign key(cid) references category(id) );
然后具體的POJO就不貼上來了,就是根據(jù)這張表生成的一些字段屬性以及set和get方法。我覺得最有可能出問題的字段應(yīng)該就是這個時間date,于是我看了下POJO里關(guān)于date的代碼:
@Entity public class Product implements java.io.Serializable { // Fields private Timestamp date; //省略其他無關(guān)代碼…… @Column(name = "date", nullable = false, length = 19) public Timestamp getDate() { return this.date; } public void setDate(Timestamp date) { this.date = date; } }
于是我再一次上網(wǎng)搜索了這個Timestamp,發(fā)現(xiàn)問題就出在這,將Timestamp改成java.util.Date即可。然后傳進(jìn)來一個Date對象,Hibernate會自動轉(zhuǎn)成Timestamp類型。
這個問題也給我一個啟示:無法執(zhí)行數(shù)據(jù)庫操作也有可能是對象本身的問題,要從表的字段和POJO屬性之間來排查。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
java使用Hex編碼解碼實現(xiàn)Aes加密解密功能示例
這篇文章主要介紹了java使用Hex編碼解碼實現(xiàn)Aes加密解密功能,結(jié)合完整實例形式分析了Aes加密解密功能的定義與使用方法,需要的朋友可以參考下2017-01-01Java Spring @Autowired的這些騷操作,你都知道嗎
這篇文章主要介紹了徹底搞明白Spring中的自動裝配和Autowired注解的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2021-09-09Java數(shù)據(jù)結(jié)構(gòu)之平衡二叉樹的實現(xiàn)詳解
平衡二叉樹又被稱為AVL樹(有別于AVL算法),且具有以下性質(zhì):它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,并且左右兩個子樹都是一棵平衡二叉樹。本文將詳解介紹一下平衡二叉樹的原理與實現(xiàn),需要的可以參考一下2022-03-03SpringBoot集成Druid監(jiān)控頁面最小化配置操作
這篇文章主要介紹了SpringBoot集成Druid監(jiān)控頁面最小化配置操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09Spring Boot整合MybatisPlus逆向工程(MySQL/PostgreSQL)
MyBatis-Plus是MyBatis的增強(qiáng)工具,本文主要介紹了Spring Boot整合MybatisPlus逆向工程(MySQL/PostgreSQL),具有一定的參考價值,感興趣的可以了解一下2021-07-07Java?Spring?AOP源碼解析之事務(wù)實現(xiàn)原理
這篇文章主要為大家介紹了Java?Spring?AOP事務(wù)實現(xiàn)原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01