解决Hibernate4执行save()或update()无效问题的方法

 更新时间:2020年03月24日 08:48:57   作者:eson_15  
这篇文章主要为大家详细介绍了解决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属性之间来排查。

以上就是本文的全部内容,希望对大家的学习有所帮助。

相关文章

  • Java中 shuffle 算法的使用

    Java中 shuffle 算法的使用

    本篇文章,小编将为大家介绍,在Java中 shuffle 算法的使用,有需要的朋友可以参考一下
    2013-04-04
  • Java集合的总体框架相关知识总结

    Java集合的总体框架相关知识总结

    今天带大家学习Java集合框架的相关知识,文中有非常详细的图文介绍,对正在学习Java的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05
  • Java 实战项目之精美物流管理系统的实现流程

    Java 实战项目之精美物流管理系统的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SpringBoot+Vue+maven+Mysql实现一个精美的物流管理系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Java中Lombok常用注解分享

    Java中Lombok常用注解分享

    以前的Java项目中充斥了太多不友好的代码,这些代码不仅没有什么技术含量,还影响代码的美观,所以Lombok应运而生了。本文和大家分享了一些Java中Lombok常用注解,需要的可以了解一下
    2023-04-04
  • 一篇文中细看Java多线程的创建方式

    一篇文中细看Java多线程的创建方式

    随着计算机的配置越来越高,我们需要将进程进一步优化,细分为线程,充分提高图形化界面的多线程的开发,这篇文章主要给大家介绍了如何通过一篇文中细看Java多线程的创建方式,需要的朋友可以参考下
    2021-07-07
  • Spring源码之请求路径匹配路由方式

    Spring源码之请求路径匹配路由方式

    这篇文章主要介绍了Spring源码之请求路径匹配路由方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 新版idea创建spring boot项目的详细教程

    新版idea创建spring boot项目的详细教程

    这篇文章给大家介绍了新版idea创建spring boot项目的详细教程,本教程对新手小白友好,若根据教程创建出现问题导致失败可下载我提供的源码,在文章最后,本教程较新,文中通过图文给大家介绍的非常详细,感兴趣的朋友可以参考下
    2024-01-01
  • Springboot 中使用 Aop代码实战教程

    Springboot 中使用 Aop代码实战教程

    AOP的编程思想是把对类对象的横切问题点,从业务逻辑中分离出来,从而达到解耦的目的,增加代码的复用性,提高开发效率,这篇文章主要介绍了Springboot中使用Aop代码实战教程,需要的朋友可以参考下
    2023-07-07
  • 如何使用Java生成PDF文档详解

    如何使用Java生成PDF文档详解

    这篇文章主要给大家介绍了关于如何使用Java生成PDF文档的相关资料,PDF是可移植文档格式,是一种电子文件格式,具有许多其他电子文档格式无法相比的优点,需要的朋友可以参考下
    2023-07-07
  • 快速掌握Java中注解与反射

    快速掌握Java中注解与反射

    本文详细介绍了Java中注解和反射的概念及应用,注解是用于给代码添加元数据的标记,如@Override、@Deprecated等,反射机制则是在运行时获取和操作类的内部信息,提高了代码的灵活度,感兴趣的朋友跟随小编一起看看吧
    2023-06-06

最新评论