首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

Hibernate映射有关问题

2011-12-29 
Hibernate映射问题小弟用Hibernate映射postgresql时出现如下问题这是hbm文件hibernate-mappingclassnam

Hibernate映射问题
小弟用Hibernate映射postgresql时出现如下问题
这是hbm文件
<hibernate-mapping>
        <class   name= "jp.talentDespatch.db.Accessories "   table= "accessories "   schema= "public ">
                <id   name= "acIndex "   type= "java.lang.Integer ">
                        <column   name= "ac_index "   />
                        <generator   class= "assigned "   />
                </id>
                <many-to-one   name= "message "   class= "jp.talentDespatch.db.Message "   fetch= "select ">
                        <column   name= "mes_index "   />
                </many-to-one>
                <property   name= "acAccessories "   type= "java.lang.String ">
                        <column   name= "ac_accessories "   />
                </property>
                <property   name= "acMender "   type= "java.lang.String ">
                        <column   name= "ac_mender "   length= "50 "   />
                </property>
                <property   name= "acReTime "   type= "java.util.Date ">
                        <column   name= "ac_re_time "   length= "8 "   />
                </property>
                <property   name= "acCreator "   type= "java.lang.String ">
                        <column   name= "ac_creator "   length= "50 "   />
                </property>
                <property   name= "acCrTime "   type= "java.util.Date ">
                        <column   name= "ac_cr_time "   length= "8 "   />
                </property>
        </class>
</hibernate-mapping>

这是java   bean  
    private   Integer   acIndex;
          private   Message   message;
          private   String   acAccessories;
          private   String   acMender;
          private   Date   acReTime;


          private   String   acCreator;
          private   Date   acCrTime;


        //   Constructors

        /**   default   constructor   */
        public   AbstractAccessories()   {
        }

/**   minimal   constructor   */
        public   AbstractAccessories(Integer   acIndex)   {
                this.acIndex   =   acIndex;
        }
       
        /**   full   constructor   */
        public   AbstractAccessories(Integer   acIndex,   Message   message,   String   acAccessories,   String   acMender,   Date   acReTime,   String   acCreator,   Date   acCrTime)   {
                this.acIndex   =   acIndex;
                this.message   =   message;
                this.acAccessories   =   acAccessories;
                this.acMender   =   acMender;
                this.acReTime   =   acReTime;
                this.acCreator   =   acCreator;
                this.acCrTime   =   acCrTime;
        }
get   set   方法都有,这里就不写了


这是数据库表生成语句

CREATE   TABLE   accessories
(
    ac_index   serial   NOT   NULL,
    ac_accessories   bytea,
    mes_index   integer,
    ac_mender   character   varying(50),
    ac_re_time   timestamp   without   time   zone,
    ac_creator   character   varying(50),
    ac_cr_time   timestamp   without   time   zone,
    CONSTRAINT   accessories_pkey   PRIMARY   KEY   (ac_index),
    CONSTRAINT   accessories_mes_index_fkey   FOREIGN   KEY   (mes_index)
            REFERENCES   message   (mes_index)   MATCH   SIMPLE
            ON   UPDATE   NO   ACTION   ON   DELETE   NO   ACTION
)  
WITHOUT   OIDS;
ALTER   TABLE   accessories   OWNER   TO   dms;


这是对应序列生成语句
CREATE   SEQUENCE   accessories_ac_index_seq
    INCREMENT   1
    MINVALUE   1
    MAXVALUE   9223372036854775807
    START   1
    CACHE   1;
ALTER   TABLE   accessories_ac_index_seq   OWNER   TO   dms;

现在一次性要向表里插入多条数据,但是主键应该设置成什么样子?
有知道的大侠告诉小弟一声,谢谢?


我现在的异常信息是:
org.hibernate.id.IdentifierGenerationException:   ids   for   this   class   must   be   manually   assigned   before   calling   save():   jp.talentDespatch.db.Accessories
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.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
at   org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:98)
at   org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at   org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:502)
at   org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:494)
at   org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:490)
at   jp.talentDespatch.db.dao.base.BaseAccessoriesDAO.attachDirty(BaseAccessoriesDAO.java:104)
at   jp.talentDespatch.manager.message.service.impl.SendMailServiceImpl.sendMail(SendMailServiceImpl.java:592)
at   jp.talentDespatch.manager.message.action.NewMessageAction.execute(NewMessageAction.java:88)
at   org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at   org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at   org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at   org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at   javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at   javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at   jp.talentDespatch.common.filter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:32)
at   org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at   org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at   org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at   org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at   org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at   org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at   org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at   org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at   org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at   org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at   org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at   java.lang.Thread.run(Thread.java:595)

[解决办法]
increment

热点排行