此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
楼主【tangcaolao】截止到2008-07-28 01:55:04的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:0 每贴平均分数:0
回帖的总数量:53 得分贴总数量:12 回帖的得分率:22%
结贴的总数量:1 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:---------------------
无满意结贴率:0.00 % 无满意结分率:---------------------
敬礼!
楼主【tangcaolao】截止到2008-07-28 01:55:04的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:0 每贴平均分数:0
回帖的总数量:53 得分贴总数量:12 回帖的得分率:22%
结贴的总数量:1 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:---------------------
无满意结贴率:0.00 % 无满意结分率:---------------------
敬礼!
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里面就不行,会报错,我在其它数据库里做过测试,没有问题,估计是自增序列的问题
在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
直接用this.getHibernateTemplete.save(对象)
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;
}
}
List list = this.getHibernateTemplate().executeFind(new HibernateCallback(){
public Object doInHibernate(Session s) throws HibernateException,SQLException{
//代码,纯sql});
}
//...
}
public Object doInHibernate(Session s) throws HibernateException,SQLException{
//代码,纯sql});
}在SSH里面这样写
中间的数据库操作代码用jdbc,
这可以在很多时候弥补hibernate的不足,例如充分利用某种数据库产品的特性以提高性能等,
当然,代价就是无法跨数据库平台了
你可以在KybasicAttachmentTem表中的xml中
加个lazy=“false”
试试看。