我用的是spring+hibernate结构,业务需要把两表minus的结果存放进第三个表,也就是复杂的sql语句,不知道hibernate支持 insert into table1 select * from Table2 minus select * from Table3语句么?
我的dao函数如下,但是还是不行
public void insertAminusB()throws Exception{
Session session = this.getSession();
Transaction tx = session.beginTransaction();
tx = session.beginTransaction();
        Connection con=session.connection();
        PreparedStatement stmt=con.prepareStatement("insert into FLIGHT_INFORMATION_AMINUSB select * from FLIGHT_INFORMATION_TEMPA minus select * from FLIGHT_INFORMATION_TEMPB");
        stmt.executeUpdate();
        tx.commit(); }
请哪位大侠指点下,先谢谢了

解决方案 »

  1.   

    org.hibernate.hql.ast.QuerySyntaxException: expecting OPEN, found 'select' near line 1, column 41 [ insert into FLIGHT_INFORMATION_BMINUSA select * from FLIGHT_INFORMATION_TEMPB minus select * from FLIGHT_INFORMATION_TEMPA]
    at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
    at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:244)
    at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:155)
    at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
    at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
    at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
    at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
    at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
    at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
    at com.travelsky.fgos.interfaces.service.impl.ReceiveHbFlightInfoTimer.ReceiveHBFlightInfo(ReceiveHbFlightInfoTimer.java(Compiled Code))
    at com.travelsky.fgos.interfaces.service.impl.ReceiveHbFlightInfoTimer.executeInternal(ReceiveHbFlightInfoTimer.java:103)
    at com.travelsky.fgos.scheduling.QuartzStatefulJobBean.execute(QuartzStatefulJobBean.java:77)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:195)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
    Caused by: line 1:41: expecting OPEN, found 'select'
    at antlr.Parser.match(Parser.java(Compiled Code))
    at org.hibernate.hql.antlr.HqlBaseParser.insertablePropertySpec(HqlBaseParser.java:808)
    at org.hibernate.hql.antlr.HqlBaseParser.intoClause(HqlBaseParser.java:790)
    at org.hibernate.hql.antlr.HqlBaseParser.insertStatement(HqlBaseParser.java:326)
    at org.hibernate.hql.antlr.HqlBaseParser.statement(HqlBaseParser.java:165)
    at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:238)
    ... 13 more