解決Hibernate4執(zhí)行save()或update()無效問題的方法
最近在寫網(wǎng)上商城項(xiàng)目時(shí),遇到一個(gè)問題:Hibernate在執(zhí)行save()或者update()方法后,并沒有任何效果,數(shù)據(jù)庫中沒有任何改動(dòng),而且控制臺(tái)也沒有報(bào)任何錯(cuò),這讓我很無語……
我在網(wǎng)上查了下,有的人說是主鍵的自增長(zhǎng)問題,有的人說是沒有開啟事務(wù),所以無法寫入或更新數(shù)據(jù)庫,我詳細(xì)看了他們的分析,說的都有道理,但是這些解決方法對(duì)我都不管用,因?yàn)槲业闹麈I是沒有問題的,事務(wù)是由Spring管理的,在其他save操作都可以,都沒有問題。
既然客觀上都沒有問題,于是我把焦點(diǎn)放在了具體要save或update的對(duì)象上了,對(duì)POJO做了仔細(xì)的分析,首先看一下我要save的對(duì)象對(duì)應(yīng)數(shù)據(jù)庫中的表:
/*=============================*/ /* Table: 商品表結(jié)構(gòu) */ /*=============================*/ create table product ( /* 商品編號(hào),自動(dòng)增長(zhǎng) */ id int primary key not null auto_increment, /* 商品名稱 */ name varchar(50), /* 商品價(jià)格 */ price decimal(8,2), /* 商品圖片 */ pic varchar(300), /* 商品簡(jiǎn)單介紹 */ remark longtext, /* 商品詳細(xì)介紹 */ xremark longtext, /* 商品生產(chǎn)日期 */ date timestamp default CURRENT_TIMESTAMP, /* 是否為推薦商品,推薦商品才有可能顯示在商城首頁 */ commend bool, /* 是否為有效商品,有效商品才有可能顯示在商城首頁 */ open bool, /* 商品所在的類別編號(hào)*/ cid int, constraint cid_FK foreign key(cid) references category(id) );
然后具體的POJO就不貼上來了,就是根據(jù)這張表生成的一些字段屬性以及set和get方法。我覺得最有可能出問題的字段應(yīng)該就是這個(gè)時(shí)間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)搜索了這個(gè)Timestamp,發(fā)現(xiàn)問題就出在這,將Timestamp改成java.util.Date即可。然后傳進(jìn)來一個(gè)Date對(duì)象,Hibernate會(huì)自動(dòng)轉(zhuǎn)成Timestamp類型。
這個(gè)問題也給我一個(gè)啟示:無法執(zhí)行數(shù)據(jù)庫操作也有可能是對(duì)象本身的問題,要從表的字段和POJO屬性之間來排查。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
Java集合的總體框架相關(guān)知識(shí)總結(jié)
今天帶大家學(xué)習(xí)Java集合框架的相關(guān)知識(shí),文中有非常詳細(xì)的圖文介紹,對(duì)正在學(xué)習(xí)Java的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05
Java 實(shí)戰(zhàn)項(xiàng)目之精美物流管理系統(tǒng)的實(shí)現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SpringBoot+Vue+maven+Mysql實(shí)現(xiàn)一個(gè)精美的物流管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11
一篇文中細(xì)看Java多線程的創(chuàng)建方式
隨著計(jì)算機(jī)的配置越來越高,我們需要將進(jìn)程進(jìn)一步優(yōu)化,細(xì)分為線程,充分提高圖形化界面的多線程的開發(fā),這篇文章主要給大家介紹了如何通過一篇文中細(xì)看Java多線程的創(chuàng)建方式,需要的朋友可以參考下2021-07-07
新版idea創(chuàng)建spring boot項(xiàng)目的詳細(xì)教程
這篇文章給大家介紹了新版idea創(chuàng)建spring boot項(xiàng)目的詳細(xì)教程,本教程對(duì)新手小白友好,若根據(jù)教程創(chuàng)建出現(xiàn)問題導(dǎo)致失敗可下載我提供的源碼,在文章最后,本教程較新,文中通過圖文給大家介紹的非常詳細(xì),感興趣的朋友可以參考下2024-01-01
Springboot 中使用 Aop代碼實(shí)戰(zhàn)教程
AOP的編程思想是把對(duì)類對(duì)象的橫切問題點(diǎn),從業(yè)務(wù)邏輯中分離出來,從而達(dá)到解耦的目的,增加代碼的復(fù)用性,提高開發(fā)效率,這篇文章主要介紹了Springboot中使用Aop代碼實(shí)戰(zhàn)教程,需要的朋友可以參考下2023-07-07

