我的数据库用的是MSSQL2005,现在在处理日志管理那块东西。日志表中有一个字段是用来记录操作时间的。我在hibernate中xxx.hbm.xml中做了如下配置:        <property name="smTime" type="java.sql.Timestamp">
            <column name="SmTime" length="23" not-null="true" default="CURRENT_TIMESTAMP"/>
        </property>然后再session中存save这个日志的信息。
但是报出了这样的异常:org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): com.xxx.xx.model.SmLog
at org.hibernate.id.Assigned.generate(Assigned.java:33)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:91)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:530)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:518)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:514)
        ...
这个异常是我这边hibernate配得不对,还是数据库表本来就有自动生成时间功能(比如起冲突之类)的原因?
我对sql2005不太熟悉,希望各位大侠指点一二,不胜感激。

解决方案 »

  1.   

    org.hibernate.id.IdentifierGenerationException: 看异常好像是你没设置主键吧  
      

  2.   

    一般是因为<id>元素配置不正确,<id>元素缺少其子元素<generator></generator>的配置引起。 
      

  3.   

    异常代码贴错了,hibernate中xxx.hbm.xml中做了如下配置:        <property name="smTime" type="java.sql.Timestamp">
                <column name="SmTime" length="23" not-null="true" default="CURRENT_TIMESTAMP"/>
            </property>这样的代码能解决问题吗(我想在数据库表添加一条记录时,数据库自动创建时间,不需要手动添加)