问题描述
hibernate映射时不能持久化时间问题:hibernate.cfg.xml如下:<?xmlversion='1.0'encoding='utf-8'?><!DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!--Databaseconnectionsettings--><propertyname="connection.driver_class">com.mysql.jdbc.Driver</property><propertyname="connection.url">jdbc:mysql://localhost:3306/hibernate</property><propertyname="connection.username">root</property><propertyname="connection.password">root</property><propertyname="dialect">org.hibernate.dialect.MySQL5Dialect</property><!--EnableHibernate'sautomaticsessioncontextmanagement--><propertyname="current_session_context_class">thread</property><!--Disablethesecond-levelcache--><propertyname="cache.provider_class">org.hibernate.cache.NoCacheProvider</property><!--EchoallexecutedSQLtostdout--><propertyname="show_sql">true</property><!--Dropandre-createthedatabaseschemaonstartup--><propertyname="hbm2ddl.auto">update</property><!--<mappingresource="cong/deng/model/Person.hbm.xml"/>--><mappingclass="cong.deng.model.Person"/></session-factory></hibernate-configuration>
Person实体:packagecong.deng.model;importjava.util.Date;importjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;@EntitypublicclassPerson{privateintid;privateStringname;privateDatedate;privateStringphone;@Id@GeneratedValuepublicintgetId(){returnid;}publicvoidsetId(intid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicDategetDate(){returndate;}publicvoidsetDate(Datedate){this.date=date;}publicStringgetPhone(){returnphone;}publicvoidsetPhone(Stringphone){this.phone=phone;}}
junit测试:@Testpublicvoidtest(){SessionFactorysf=newConfiguration().configure().buildSessionFactory();Sessions=sf.getCurrentSession();Personp=newPerson();p.setName("java");p.setDate(newDate());s.beginTransaction();s.save(p);s.getTransaction().commit();}
运行时,不能存入时间,其他一切正常,请教各位大虾帮忙解决下,。小弟这厢有礼了!
解决方案
解决方案二:
junit测试中的p.setDate(newDate());是用的java.util.Date
解决方案三:
实体的日期的类型跟数据库的要一致,不然无法更新
解决方案四:
收集上来的时间需要通过转换成java.util.date类型的,开可以匹配建议换成String类型的
解决方案五:
java.sql.date日期类型
解决方案六:
1.数据库中用DateTime,java用Date是可以映射的,我用hibernate测试过。2.楼主能否把异常信息贴出来,调试错误最重要的就是堆栈信息。