2010-05-06 7 views
0

J'ai une requête d'hibernation que j'essaie de faire fonctionner mais je reçois une exception avec une trace de pile pas très utile. J'inclus le code, la trace de la pile et le bavardage d'hibernation avant que l'exception soit levée. Si vous avez besoin de moi pour inclure les classes d'entité pour MessageTarget et GrpExclusion, faites-le moi savoir dans les commentaires et je les ajouterai.Exception de requête 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; 
} 

Voici la pile de chemin.

[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) 

Voici le bavardage d'hibernation.

[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 

Répondre

2

Vous n'écrivez pas correctement votre HQL. Je recommande de lire le HQL chapter de la documentation.

Il y a quelques choses que je vois mal avec ta requête:

  1. Votre subselect n'est pas une requête HQL valide. Quelque chose comme (de GroupExclusion ge où groupNumber =?) Serait probablement plus proche de ce que vous voulez.
  2. Les noms de colonne doivent correspondre à leurs noms Java getter et non aux noms de colonne de base de données.
  3. Vous devez fermer votre HibernateSession dans un bloc finally:..

    Session session = getHibernateTemplate() getSessionFactory() openSession(); try { ... } enfin { session.close(); }

+0

Oui, j'ai lu les docs HQL pour obtenir de l'aide pour écrire ceci. Je viens de commencer à utiliser Hibernate cette semaine, donc je suis sur cette courbe d'apprentissage. J'ai écrit SQL et JPQL avant ... donc je ne suis pas totalement hors sujet. Merci! – dharga

+0

ouais, le session.close() a été déplacé, le message ne reflète tout simplement pas ... je vais mettre à jour le poste – dharga

+0

duh! Je connaissais l'utilisation de "select" ... merci de voir ce que je surplombais! – dharga