處理Hibernate4履行save()或update()有效成績的辦法。本站提示廣大學習愛好者:(處理Hibernate4履行save()或update()有效成績的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是處理Hibernate4履行save()或update()有效成績的辦法正文
比來在寫網上商城項目時,碰到一個成績:Hibernate在履行save()或許update()辦法後,並沒有任何後果,數據庫中沒有任何修改,並且掌握台也沒有報任何錯,這讓我很無語……
我在網上查了下,有的人說是主鍵的自增加成績,有的人說是沒有開啟事務,所以沒法寫入或更新數據庫,我具體看了他們的剖析,說的都有事理,然則這些處理辦法對我都不論用,由於我的主鍵是沒有成績的,事務是由Spring治理的,在其他save操作都可以,都沒有成績。
既然客不雅上都沒有成績,因而我把核心放在了詳細要save或update的對象上了,對POJO做了細心的剖析,起首看一下我要save的對象對應數據庫中的表:
/*=============================*/ /* Table: 商品表構造 */ /*=============================*/ create table product ( /* 商品編號,主動增加 */ id int primary key not null auto_increment, /* 商品稱號 */ name varchar(50), /* 商品價錢 */ price decimal(8,2), /* 商品圖片 */ pic varchar(300), /* 商品簡略引見 */ remark longtext, /* 商品具體引見 */ xremark longtext, /* 商品臨盆日期 */ date timestamp default CURRENT_TIMESTAMP, /* 能否為推舉商品,推舉商品才有能夠顯示在商城首頁 */ commend bool, /* 能否為有用商品,有用商品才有能夠顯示在商城首頁 */ open bool, /* 商品地點的種別編號*/ cid int, constraint cid_FK foreign key(cid) references category(id) );
然後詳細的POJO就不貼下去了,就是依據這張表生成的一些字段屬性和set和get辦法。我認為最有能夠出成績的字段應當就是這個時光date,因而我看了下POJO裡關於date的代碼:
@Entity public class Product implements java.io.Serializable { // Fields private Timestamp date; //省略其他有關代碼…… @Column(name = "date", nullable = false, length = 19) public Timestamp getDate() { return this.date; } public void setDate(Timestamp date) { this.date = date; } }
因而我再一次上彀搜刮了這個Timestamp,發明成績就出在這,將Timestamp改成java.util.Date便可。然後傳出去一個Date對象,Hibernate會主動轉成Timestamp類型。
這個成績也給我一個啟發:沒法履行數據庫操作也有能夠是對象自己的成績,要從表的字段和POJO屬性之間來排查。
原文鏈接:http://blog.csdn.net/eson_15/article/details/51383298
以上就是本文的全體內容,願望對年夜家的進修有所贊助。