此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【tangcaolao】截止到2008-07-28 01:55:04的历史汇总数据(不包括此帖):
发帖的总数量:1                        发帖的总分数:0                        每贴平均分数:0                        
回帖的总数量:53                       得分贴总数量:12                       回帖的得分率:22%                      
结贴的总数量:1                        结贴的总分数:0                        
无满意结贴数:0                        无满意结贴分:0                        
未结的帖子数:0                        未结的总分数:0                        
结贴的百分比:100.00%               结分的百分比:---------------------
无满意结贴率:0.00  %               无满意结分率:---------------------
敬礼!

解决方案 »

  1.   

    在其它数据库中,这个问题好解决,可是在ORACLE中就有点麻烦了,主要是那个自增序列的问题Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
    Transaction tran=session.beginTransaction();
    session.save(transientInstance);
    String sql = "insert into KybasicAttachment(attId,attFId,attName,attUrl,attFormat,attSize,attFileTable,attStandby1,attStandby2,attStandby3,attStandby4,attStandby5,attStandby6) select t.attTId" +transientInstance.getInfoId()+",t.attTName,t.attTUrl,t.attTFormat,t.attTSize,t.attTFileTable,t.attTStandby1,t.attTStandby2,t.attTStandby3,t.attTStandby4,t.attTStandby5,t.attTStandby6 from KybasicAttachmentTem t";
    session.createQuery(sql).executeUpdate();
    tran.commit();其中attId和attTid为ORACLE中自增序列,这个语句在ORACLE里面就不行,会报错,我在其它数据库里做过测试,没有问题,估计是自增序列的问题
      

  2.   

    使用HQL语句来写insert into select,这个语句在hibernate是提供的,按着上面的那种写法,表名和字段名都按POJO对象来写是可以的,不过在在ORACLE中就不知道为啥就会报错,我移植到mysql上面一切正常,郁闷
      

  3.   

    在纯hibernate中,也是成功的,可就是在SSH中就不行,郁闷,到底是什么原因?
    在SSH框架中就报:
    ERROR - *** ERROR: line 1:1: unexpected token: insert
    ERROR - save failed
    org.hibernate.hql.ast.QuerySyntaxError: unexpected token: insert near line 1, column 1 [insert into KybasicAttachment(attId,attName,attUrl,attFormat,attSize,attFileTable,attStandby1,attStandby2,attStandby3,attStandby4,attStandby5,attStandby6) select t.attTId,t.attTName,t.attTUrl,t.attTFormat,t.attTSize,t.attTFileTable,t.attTStandby1,t.attTStandby2,t.attTStandby3,t.attTStandby4,t.attTStandby5,t.attTStandby6 from com.bolue.kymanage.kybasic.vo.KybasicAttachmentTem t]
    at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:63)
    at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:215)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)
    at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:427)
    at org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:884)
    at org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:865)
    at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:89)
    at com.bolue.kymanage.kybasic.vo.KybasicInfoDAOImpl.save(KybasicInfoDAOImpl.java:42)
    at com.bolue.kymanage.kybasic.service.KybasicInfoServiceImpl.save(KybasicInfoServiceImpl.java:46)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:287)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:181)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:148)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
    at $Proxy2.save(Unknown Source)
    at com.bolue.kymanage.kybasic.action.KybasicInfoAction.infoAdd(KybasicInfoAction.java:183)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)
    at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    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 com.bolue.kymanage.kybasic.common.LoginFilter.doFilter(LoginFilter.java:42)
    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:230)
    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:261)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Unknown Source)
    Caused by: line 1:1: unexpected token: insert
    at org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:156)
    at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:209)
    ... 47 more
      

  4.   

    ...
    直接用this.getHibernateTemplete.save(对象)
      

  5.   

    呵呵,你没看懂我说的意思,是用insert into select HQL语句来操作,将一张表中的数据复制到另外一张表中,不是简单的insert操作,在hibernate中是支持insert into select HQL语句的,我现在出的问题就是hibernate交给spring控制后就不行了.
      

  6.   

    在hibernate是可以直接像这下面这样写的,不过在SSH框架中,交给Spring来控制后就不行了. public void saveFromSelect() {
    try {
    Transaction tran=getSession().beginTransaction();
    String hql="insert into A (AName,ASex) select b.BName,b.BSex from B b";
    getSession().createQuery(hql).executeUpdate();
    tran.commit();
    } catch (RuntimeException re) {
    throw re;
    }
    }
      

  7.   

    method(){
    List list = this.getHibernateTemplate().executeFind(new HibernateCallback(){   
                public Object doInHibernate(Session s) throws HibernateException,SQLException{ 
    //代码,纯sql});
    }
    //...
    }
      

  8.   

    List list = this.getHibernateTemplate().executeFind(new HibernateCallback(){   
                public Object doInHibernate(Session s) throws HibernateException,SQLException{ 
    //代码,纯sql});
    }在SSH里面这样写
      

  9.   

    其实有个简单的办法,就是只使用hibernate提供的connection和事务,
    中间的数据库操作代码用jdbc,
    这可以在很多时候弥补hibernate的不足,例如充分利用某种数据库产品的特性以提高性能等,
    当然,代价就是无法跨数据库平台了
      

  10.   

    额···貌似hibernate有个啥SQL方言哦,不晓得,没用过,精神支持·····
      

  11.   

    估计是延时加载的问题。
    你可以在KybasicAttachmentTem表中的xml中 
    加个lazy=“false”
    试试看。