最近、オンラインモールプロジェクトを書くとき、私は問題に遭遇しました:hibernateはsave()またはupdate()メソッドを実行した後に何の効果もありませんでした、データベースに変更はありませんでした、そして、コンソールはエラーを報告しませんでした。
私はオンラインで確認しましたが、一部の人々はそれが主要な鍵の自己成長の問題であると言い、一部の人々はトランザクションが開始されていないと言ったので、データベースを書き込むか更新することは不可能でした。私は彼らの分析を詳細に読みましたが、すべてが理にかなっていますが、これらのソリューションは私にとってはうまくいきませんでした。なぜなら私の主キーには問題がなく、トランザクションは春までに管理されており、他の保存操作では問題ありませんが、問題はありません。
客観的に問題はないので、私は特定のオブジェクトに焦点を合わせて保存または更新し、Pojoを慎重に分析しました。まず、オブジェクトの対応するデータベースのテーブルを見て、以下を見てみましょう。
/*========================================================================= ==================================================================/テーブル製品( /*製品番号、自動成長* /ID INTプライマリキーNOT NULL AUTO_INCREMENT、 /*製品名* /NAME VARCHAR(50)、 /*製品価格* /価格小数(8,2)、 /*製品絵* /PIC VARCHAR(300)、 /*製品概要* /発言longtext* /* dergtext、dectort、 /* defautip* /* /* decurtip推奨される製品であるかどうかにかかわらず、モールのホームページに表示される場合があります */コメントブール、/ *有効な製品であろうと、モールのホームページに表示される可能性があります */ open bool、/ *製品のカテゴリ番号はあります */ cid int、制約CID_FK外部キー(CID)参照(ID));
その後、特定のPojoは投稿されませんが、この表に基づいてフィールドプロパティとセットおよび取得方法を設定して取得します。問題を抱えている可能性が最も高いフィールドは、今回の日付であるべきだと思うので、Pojoの日付についてコードを見ました。
@Entity Public Class ProductはJava.io.Serializable {// Fieldsプライベートタイムスタンプの日付を実装しています。 //他の無関係なコードを省略します... @column(name = "date"、nullable = false、length = 19)public Timestamp getDate(){return this.date; } public void setDate(TimestAmp Date){this.date = date; }}そこで、このタイムスタンプを再度検索しましたが、問題がここにあることを発見しました。タイムスタンプをjava.util.dateに変更するだけです。その後、日付オブジェクトが渡され、hibernateは自動的にタイムスタンプタイプに変換されます。
また、この問題は啓示をもたらします。データベース操作を実行できないことも、オブジェクト自体の問題である可能性があり、テーブルのフィールドとPojo属性の間でそれをトラブルシューティングする必要があります。
オリジナルリンク:http://blog.csdn.net/eson_15/article/details/51383298
上記はこの記事に関するものです。すべての人の学習に役立つことを願っています。