数据库是oracle,相关SQL为 LAST_UPDATE_DATE DATE not null使用的注解为
private Date lastUpdateDate;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "LAST_UPDATE_DATE", nullable = false, length = 7)
public Date getLastUpdateDate() {
return this.lastUpdateDate;
}public void setLastUpdateDate(Date lastUpdateDate) {
this.lastUpdateDate = lastUpdateDate;
}按照网上一些帖子里说如果设置@Temporal(TemporalType.TIMESTAMP)为TemporalType.TIMESTAMP的话就会自己取数据库的值,不知道是否真的可以实现,我这样做了报下面的错(另外主要是不想用JAVA的系统时间)
,请大家帮忙。报错如下
org.springframework.dao.DataIntegrityViolationException: not-null property references a null or transient value: com.ssh.bean.UcsPipeline.lastUpdateDate; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value: com.ssh.bean.UcsPipeline.lastUpdateDate 
    org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:645)
    org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
    org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)

解决方案 »

  1.   

    一方面,我习惯了之前经常用oralce的sysdate,而且系统之前的部分是用数据库时间,web应用也未必和数据库在同台服务器上,网络传输以及系统时间的略微差异还是会有的;
    另一方面,我最近在看注解,觉得一个实体类文件+一个hbm.xml文件可以被单独的一个实独的注解类文件代替,这样也少了一大堆的hbm.xml配置文件,根据hbm.xml配置好像是可以实现使用数据库当前时间的,所以我想知道是否注解也可以实现,另外想知道是否注解可以完全代替hbm.xml配置文件实现它的所有功能
      

  2.   

    可惜没人帮忙解决 baidu也发了同样没人正面解答
      

  3.   

    @Temporal(TemporalType.TIMESTAMP)
    对应数据库类型应该是datetime型
    你的数据库类型是date
    那你注解的时候应该是@Temporal(TemporalType.DATE)
    吧。先把这个改了再试试
      

  4.   

    开始就是@Temporal(TemporalType.DATE),测试后不行;
    然后网上查找的结果说改成@Temporal(TemporalType.TIMESTAMP)就可以了,现在试的还不行