代码之家  ›  专栏  ›  技术社区  ›  dharga

休眠查询异常

  •  0
  • dharga  · 技术社区  · 15 年前

    我有一个hibernate查询,我正在尝试工作,但不断得到一个异常与一个不那么有用的堆栈跟踪。我将在抛出异常之前包括代码、堆栈跟踪和hibernate chatter。如果您需要我包含MessageTarget和GrpExclusion的实体类,请在注释中告诉我,我会添加它们。

    public List<MessageTarget> findMessageTargets(int age, String gender, String businessCode, String groupId, String systemCode) {
        Session session = getHibernateTemplate().getSessionFactory().openSession();
        List<MessageTarget> results = new ArrayList<MessageTarget>();
        try {
            String hSql = "from MessageTarget mt where " +
                            "not exists (select GrpExclusion where grp_no = ?) and " +
                            "(trgt_gndr_cd = 'A' or trgt_gndr_cd = ?) and " +
                            "sys_src_cd = ? and " +
                            "bampi_busn_sgmnt_cd = ? and " +
                            "trgt_low_age <= ? and " +
                            "trgt_high_age >= ? and " +
                            "(effectiveDate is null or effectiveDate <= ?) and " +
                            "(termDate is null or termDate >= ?)";
    
            results = session.createQuery(hSql)
                                            .setParameter(0, groupId)
                                            .setParameter(1, gender)
                                            .setParameter(2, systemCode)
                                            .setParameter(3, businessCode)
                                            .setParameter(4, age)
                                            .setParameter(5, age)
                                            .setParameter(6, new Date())
                                            .setParameter(7, new Date())
                                            .list();
        } catch (Exception e) {
            System.err.println(e.getMessage());
            e.printStackTrace();
    
        } finally {
          session.close();
        }
        return results;
    }
    

    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R java.lang.NullPointerException
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.ast.util.SessionFactoryHelper.findSQLFunction(SessionFactoryHelper.java:365)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.ast.tree.IdentNode.getDataType(IdentNode.java:289)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:165)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.ast.HqlSqlWalker.useSelectClause(HqlSqlWalker.java:831)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.ast.HqlSqlWalker.processQuery(HqlSqlWalker.java:619)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:672)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.collectionFunctionOrSubselect(HqlSqlBaseWalker.java:4465)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:4165)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1864)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1839)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1789)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1789)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1789)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1789)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1789)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1789)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:1789)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:818)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:604)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:288)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:231)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:254)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:185)
    [5/6/10 15:05:21:041 EDT] 00000017 SystemErr     R  at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:101)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:94)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:156)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:135)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1651)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.bcbst.bamp.ws.dao.MessageTargetDAOImpl.findMessageTargets(MessageTargetDAOImpl.java:30)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.bcbst.bamp.ws.common.AlertReminder.findMessageTargets(AlertReminder.java:22)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at java.lang.reflect.Method.invoke(Method.java:599)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at org.apache.axis2.jaxws.server.dispatcher.JavaDispatcher.invokeTargetOperation(JavaDispatcher.java:81)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at org.apache.axis2.jaxws.server.dispatcher.JavaBeanDispatcher.invoke(JavaBeanDispatcher.java:98)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at org.apache.axis2.jaxws.server.EndpointController.invoke(EndpointController.java:109)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at org.apache.axis2.jaxws.server.JAXWSMessageReceiver.receive(JAXWSMessageReceiver.java:159)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:188)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.websvcs.transport.http.WASAxis2Servlet.doPost(WASAxis2Servlet.java:1389)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at javax.servlet.http.HttpServlet.service(HttpServlet.java:738)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1536)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:829)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:458)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:175)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3742)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:929)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1583)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:178)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:272)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    [5/6/10 15:05:21:057 EDT] 00000017 SystemErr     R  at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)
    

    这里是冬眠聊天。

    [5/6/10 15:05:20:651 EDT] 00000017 XmlBeanDefini I org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions Loading XML bean definitions from class path resource [beans.xml]
    [5/6/10 15:05:20:823 EDT] 00000017 Configuration I org.slf4j.impl.JCLLoggerAdapter info configuring from url: file:/C:/workspaces/bampi/AlertReminderWS/WebContent/WEB-INF/classes/hibernate.cfg.xml
    [5/6/10 15:05:20:838 EDT] 00000017 Configuration I org.slf4j.impl.JCLLoggerAdapter info Configured SessionFactory: java:hibernate/Alert/SessionFactory1.0.3
    [5/6/10 15:05:20:838 EDT] 00000017 AnnotationBin I org.hibernate.cfg.AnnotationBinder bindClass Binding entity from annotated class: com.bcbst.bamp.ws.model.MessageTarget
    [5/6/10 15:05:20:838 EDT] 00000017 EntityBinder  I org.hibernate.cfg.annotations.EntityBinder bindTable Bind entity com.bcbst.bamp.ws.model.MessageTarget on table MessageTarget
    [5/6/10 15:05:20:854 EDT] 00000017 AnnotationBin I org.hibernate.cfg.AnnotationBinder bindClass Binding entity from annotated class: com.bcbst.bamp.ws.model.GrpExclusion
    [5/6/10 15:05:20:854 EDT] 00000017 EntityBinder  I org.hibernate.cfg.annotations.EntityBinder bindTable Bind entity com.bcbst.bamp.ws.model.GrpExclusion on table GrpExclusion
    [5/6/10 15:05:20:854 EDT] 00000017 CollectionBin I org.hibernate.cfg.annotations.CollectionBinder bindOneToManySecondPass Mapping collection: com.bcbst.bamp.ws.model.MessageTarget.exclusions -> GrpExclusion
    [5/6/10 15:05:20:885 EDT] 00000017 AnnotationSes I org.springframework.orm.hibernate3.LocalSessionFactoryBean buildSessionFactory Building new Hibernate SessionFactory
    [5/6/10 15:05:20:901 EDT] 00000017 ConnectionPro I org.slf4j.impl.JCLLoggerAdapter info Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
    [5/6/10 15:05:20:901 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info RDBMS: Microsoft SQL Server, version: 9.00.4035
    [5/6/10 15:05:20:901 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info JDBC driver: Microsoft SQL Server 2005 JDBC Driver, version: 1.2.2828.100
    [5/6/10 15:05:20:901 EDT] 00000017 Dialect       I org.slf4j.impl.JCLLoggerAdapter info Using dialect: org.hibernate.dialect.SQLServerDialect
    [5/6/10 15:05:20:916 EDT] 00000017 TransactionFa I org.slf4j.impl.JCLLoggerAdapter info Transaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory
    [5/6/10 15:05:20:916 EDT] 00000017 TransactionMa I org.slf4j.impl.JCLLoggerAdapter info No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
    [5/6/10 15:05:20:916 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Automatic flush during beforeCompletion(): disabled
    [5/6/10 15:05:20:916 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Automatic session close at end of transaction: disabled
    [5/6/10 15:05:20:916 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Scrollable result sets: enabled
    [5/6/10 15:05:20:916 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info JDBC3 getGeneratedKeys(): enabled
    [5/6/10 15:05:20:916 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Connection release mode: auto
    [5/6/10 15:05:20:916 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Default batch fetch size: 1
    [5/6/10 15:05:20:916 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Generate SQL with comments: disabled
    [5/6/10 15:05:20:916 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Order SQL updates by primary key: disabled
    [5/6/10 15:05:20:932 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Order SQL inserts for batching: disabled
    [5/6/10 15:05:20:932 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
    [5/6/10 15:05:20:932 EDT] 00000017 ASTQueryTrans I org.slf4j.impl.JCLLoggerAdapter info Using ASTQueryTranslatorFactory
    [5/6/10 15:05:20:932 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Query language substitutions: {}
    [5/6/10 15:05:20:932 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info JPA-QL strict compliance: disabled
    [5/6/10 15:05:20:932 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Second-level cache: enabled
    [5/6/10 15:05:20:932 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Query cache: disabled
    [5/6/10 15:05:20:932 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Cache region factory : org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge
    [5/6/10 15:05:20:932 EDT] 00000017 RegionFactory I org.slf4j.impl.JCLLoggerAdapter info Cache provider: org.hibernate.cache.NoCacheProvider
    [5/6/10 15:05:20:948 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Optimize cache for minimal puts: disabled
    [5/6/10 15:05:20:948 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Structured second-level cache entries: disabled
    [5/6/10 15:05:20:948 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Statistics: disabled
    [5/6/10 15:05:20:948 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Deleted entity synthetic identifier rollback: disabled
    [5/6/10 15:05:20:948 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Default entity-mode: pojo
    [5/6/10 15:05:20:948 EDT] 00000017 SettingsFacto I org.slf4j.impl.JCLLoggerAdapter info Named query checking : enabled
    [5/6/10 15:05:20:979 EDT] 00000017 SessionFactor I org.slf4j.impl.JCLLoggerAdapter info building session factory
    [5/6/10 15:05:21:010 EDT] 00000017 SessionFactor I org.slf4j.impl.JCLLoggerAdapter info Factory name: java:hibernate/Alert/SessionFactory1.0.3
    [5/6/10 15:05:21:010 EDT] 00000017 NamingHelper  I org.slf4j.impl.JCLLoggerAdapter info JNDI InitialContext properties:{}
    [5/6/10 15:05:21:010 EDT] 00000017 NamingHelper  I org.slf4j.impl.JCLLoggerAdapter info Creating subcontext: java:hibernate
    [5/6/10 15:05:21:010 EDT] 00000017 NamingHelper  I org.slf4j.impl.JCLLoggerAdapter info Creating subcontext: Alert
    [5/6/10 15:05:21:010 EDT] 00000017 SessionFactor I org.slf4j.impl.JCLLoggerAdapter info Bound factory to JNDI name: java:hibernate/Alert/SessionFactory1.0.3
    [5/6/10 15:05:21:026 EDT] 00000017 SessionFactor W org.slf4j.impl.JCLLoggerAdapter warn InitialContext did not implement EventContext
    [5/6/10 15:05:21:041 EDT] 00000017 PARSER        E org.slf4j.impl.JCLLoggerAdapter error <AST>:0:0: unexpected end of subtree
    
    1 回复  |  直到 15 年前
        1
  •  2
  •   Eric Hauser    15 年前

    您没有正确地编写HQL。我建议你读一下 HQL chapter 从文件中。

    我认为你的问题有几个地方不对:

    1. 您的子选择不是有效的HQL查询。类似于(groupNumber=?)的东西可能更接近您想要的东西。
    2. 列名应该与其Java getter名称匹配,而不是与数据库列名匹配。
    3. 您应该在finally块中关闭休眠会话:

      试试看{ ... }最后{