2016-09-05 13 views
0

Я знаю, что здесь много вопросов, но я посмотрел тонны и до сих пор не смог решить свою проблему.Исключительное исключение указателя при вызове JPA с именем запроса

Я пытаюсь вызвать именованный запрос. У меня есть следующие:

@Stateless 
public class ClientCFacade extends AbstractFacade<ClientC> { 

    @PersistenceContext(unitName = "the_database") 
    private EntityManager em; 

    @Override 
    protected EntityManager getEntityManager() { 
     return em; 
    } 

    public ClientCFacade() { 
     super(ClientC.class); 
    } 

    public List<ClientC> findByClientId(Integer clientId) { 
     try { 

      List<ClientC> clientCsList = em.createNamedQuery(ClientCs.FIND_BY_CLIENT_ID, ClientC.class). 
        setParameter("clientId", clientId) 
        .getResultList(); 


      return clientCsList; 

     } catch (NoResultException ex) { 
      return null; 
     } 
    } 

и

@Entity 
@Table(name = "clients") 
@NamedQueries({ 
     @NamedQuery(name = ClientCs.FIND_BY_CLIENT_ID, 
       query = "select cc" + 
         "from " + 
         "ClientCs cc " + 
         "WHERE " + 
         "cc.clientId= :clientId") 
}) 
public class ClientCs implements Serializable { 

    private static final long serialVersionUID = 1L; 
    public static final String FIND_BY_CLIENT_ID = "ClientCs.findByClientId"; 

@Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    @Column(name = "id") 
    private Integer id; 
    @Column(name = "client_id", nullable = false) 
    private Integer clientId; 

со всеми добытчиками и сеттеров.

И я это называю, как:

List<ClientC> Cs = clientCFacade.findByClientId(1234); 

Моя ошибка:

java.lang.NullPointerException 
      at the.package.name.ClientCFacade.findByClientId(ClientCFacade.java:56) 
      at the.package.name.service.ApiService.runTransaction(ApiService.java:413) 
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
      at java.lang.reflect.Method.invoke(Method.java:483) 
      at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) 
      at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) 
      at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) 
      at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) 
      at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
      at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) 
      at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) 
      at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) 
      at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1542) 
      at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1473) 
      at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1419) 
      at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1409) 
      at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:409) 
      at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:558) 
      at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:733) 
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
      at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) 
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) 
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) 
      at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) 
      at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) 
      at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) 
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) 
      at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357) 
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260) 
      at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188) 
      at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) 
      at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) 
      at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) 
      at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) 
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) 
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) 
      at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) 
      at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
      at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) 
      at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) 
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) 
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) 
      at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) 
      at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) 
      at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) 
      at java.lang.Thread.run(Thread.java:745) 

Любая помощь серьезно ценится.

+0

Как это даже компилировать? Вы передаете String методу, который ожидает Integer ... – unwichtich

+0

Вы пытаетесь установить параметр с именем 'id', но параметр в NamedQuery определяется как' clientId'. Также отсутствует пробел между 'select cc' и' from' в NamedQuery. –

+0

Я исправил это в своем коде и снова запустил его - я получаю точно такую ​​же ошибку. – Dee

ответ

0

Вы устанавливаете параметр, который не существует в вашем именованном запросе. Заменить идентификатор с ClientId в методе public List<ClientC> findByClientId(String clientId)

Он должен выглядеть следующим образом:

List<ClientC> clientCsList = em.createNamedQuery(ClientCs.FIND_BY_CLIENT_ID, ClientC.class). 
       setParameter("clientId", clientId) 
       .getResultList(); 
+0

Я сделал это изменение и попробовал еще раз. Я все равно получаю ту же ошибку. – Dee

+0

Загрузите больше трассировки стека с заброшенным исключением. И, пожалуйста, обновите свой код, потому что все еще есть много ошибок компиляции. –

+0

Я загрузил полную трассировку стека и зафиксировал имя параметра – Dee

 Смежные вопросы

  • Нет связанных вопросов^_^