2010-05-06 104 views
0

我有一个Hibernate查询我试图让工作,但不断收到异常与一个不那么有用的堆栈跟踪。在引发异常之前,我包含了代码,堆栈跟踪和hibernate聊天记录。如果您需要我包含MessageTarget和GrpExclusion的实体类,请在评论中告知我,然后添加它们。Hibernate查询异常

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) 

这里是hibernate的喋喋不休。

[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 

回答

2

你没有正确编写你的HQL。我建议阅读文档中的HQL chapter

有几件事情我看错了与查询:

  1. 你再选择是不是一个有效的HQL查询。类似于(来自GroupExclusion ge,其中groupNumber =?)可能更接近你想要的。
  2. 列名应与他们的Java的getter的名字,而不是数据库列名。
  3. 应关闭HibernateSession在finally块:。

    会话的会话= getHibernateTemplate()了getSessionFactory()的openSession(); 尝试{ ... } {终于 session.close(); }

+0

是的,我一直在阅读HQL文档,以获得一些帮助写这篇文章。本周我刚开始使用Hibernate,所以我正在学习这条曲线。我之前写过SQL和JPQL ......所以我并没有完全不用它。谢谢! – dharga 2010-05-06 19:36:54

+0

是的,该session.close()已被移动,该职位只是没有反映它...我会更新该职位 – dharga 2010-05-06 19:38:09

+0

杜!我知道使用“选择”...感谢看到我忽略了什么! – dharga 2010-05-06 19:43:01