简体   繁体   English

将remove(T实体)方法用于JPA时出现java.lang.NullPointerException

[英]I am a getting a java.lang.NullPointerException when using the remove(T entity) method for JPA

kindly help me out with this NullPointerException error i am getting while trying to use the remove(T entity) method in JPA 请尝试在JPA中使用remove(T实体)方法时遇到此NullPointerException错误,请帮助我

Here is my code 这是我的代码

ControllerServlet ControllerServlet

}else if (userPath.equals("/confirm_delete")){

       String userid = request.getParameter("userToDelete");

       int usrId = Integer.valueOf(userid);

        SystemusersFacade usertoDelete = new SystemusersFacade();

       Systemusers user = new Systemusers();
            user =  systemusersFacade.find(usrId);

       usertoDelete.remove(user);

        userPath ="/view_users";

SystemusersFacade extends AbstractFacade that contains the remove(T entity) method) SystemusersFacade扩展了AbstractFacade,其中包含remove(T实体)方法)

remove(T entity) method
public void remove(T entity) {
        System.out.println(entity);
        getEntityManager().remove(getEntityManager().merge(entity));
    }

Below is the NullPointerException i am getting 以下是我得到的NullPointerException

Info:   theBankingGuide was successfully deployed in 13,022 milliseconds.
Info:   WebModule[null] ServletContext.log():ControllerServlet:
Info:   entity.Systemusers[ userId=1 ]
Warning:   StandardWrapperValve[ControllerServlet]: Servlet.service() for servlet ControllerServlet threw exception
java.lang.NullPointerException
    at session.AbstractFacade.remove(AbstractFacade.java:35)
    at controller.ControllerServlet.doPost(ControllerServlet.java:212)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at org.glassfish.tyrus.servlet.TyrusServletFilter.doFilter(TyrusServletFilter.java:295)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
    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:415)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
    at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Thread.java:745)

I am sure that the entity is not passed as a null because when i use a System.out.Print, it gives me a value as you see in the log above Info: entity.Systemusers[ userId=1 ] 我确信该实体不会作为null传递,因为当我使用System.out.Print时,它为我提供了一个值,如您在上面的Info日志中所看到的:entity.Systemusers [userId = 1]

I have also checked the debugger and the entity variable exits with the following parameters 我还检查了调试器,并使用以下参数退出了实体变量

entity  Systemusers #1232   
Static          
_persistence_cacheKey   HardCacheWeakIdentityMap$ReferenceCacheKey  #1280   
_persistence_fetchGroup     null    
_persistence_href       null    
_persistence_listener   AttributeChangeListener #1281   
_persistence_primaryKey Integer ObjectFieldVariable _persistence_primaryKey 
_persistence_relationshipInfo       null
_persistence_session        null    
_persistence_shouldRefreshFetchGroup    boolean false   
adsCollection   IndirectList    size = 0
mmtransinfoCollection   IndirectList    size = 0
securitiesinfoCollection    IndirectList    size = 0
systemUsersTime  Date  02-Jan-2015 20:09:52
userEmail   String  jonahkayizzi@gmail.com
userId  Integer 1
userName    String  "Jonah"
userPassword    String  "0xgl#kylZ"
userType    String  "Manager"

I also tried creating my custome delete function in the SystemusersFacade and i got the same error. 我还尝试在SystemusersFacade中创建我的客户删除功能,但遇到了同样的错误。

Please help out 请帮忙

EDIT 编辑

package session; 

import entity.Systemusers; 
import javax.ejb.Stateless; 
import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 

/** 
* 
* @author Jonah 
*/ 
@Stateless 
public class SystemusersFacade extends AbstractFacade<Systemusers> { 

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

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

    public SystemusersFacade() { 
        super(Systemusers.class); 
    } 
}

package session; 

import java.util.List; 
import javax.persistence.EntityManager; 
import javax.persistence.Query; 

public abstract class AbstractFacade<T> { 

    private Class<T> entityClass; 

    public AbstractFacade(Class<T> entityClass) { 
        this.entityClass = entityClass; 
    } 

    protected abstract EntityManager getEntityManager(); 

    public void remove(T entity) { 
        System.out.println(entity);
        getEntityManager().remove(getEntityManager().merge(entity)); 
    } 

}

SystemusersFacade usertoDelete = new SystemusersFacade() is your problem (ignoring strange name, maybe a copy/paste error). SystemusersFacade usertoDelete = new SystemusersFacade()是您的问题(忽略奇怪的名称,也许是复制/粘贴错误)。 Since you instantiate it using new , you are bypassing container management so the annotations are not processed. 由于使用new实例化了它,因此绕过了容器管理,因此不处理注释。 You need to inject the bean into the class that uses it. 您需要将bean注入使用它的类中。 Use something like this 使用这样的东西

@EJB
private SystemusersFacade systemusersFacade;

...

String userid = request.getParameter("userToDelete");
int usrId = Integer.valueOf(userid);
Systemusers user = systemusersFacade.find(usrId);
systemusersFacade.remove(user);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 我正在获取java.lang.NullPointerException - I am getting java.lang.NullPointerException 使用 Apache POI 时出现 java.lang.NullPointerException - I am getting a java.lang.NullPointerException when using Apache POI 为什么我要为String数组获取java.lang.NullPointerException? - Why am I getting java.lang.NullPointerException for a String array? 为什么我得到:java.lang.NullPointerException? - why I am getting : java.lang.NullPointerException? 不知道为什么我得到java.lang.NullPointerException - Not sure why I am getting java.lang.NullPointerException 从 groovy 脚本调用方法时,我在 Jenkisn 上收到 java.lang.NullPointerException - I am getting java.lang.NullPointerException on Jenkisn while calling method from groovy script 当我尝试在Studio中切换活动时,为什么会收到java.lang.NullPointerException错误? - Why am I getting a java.lang.NullPointerException error when I try to switch activities in studio? 我在尝试检查internetConnection时得到java.lang.NullPointerException? - i am getting java.lang.NullPointerException when trying to check internetConnection? 调用Method.invoke时获取java.lang.NullPointerException - Getting java.lang.NullPointerException when calling Method.invoke 我在Vector中插入元素时收到错误java.lang.NullPointerException - I am getting error java.lang.NullPointerException when insert element in Vector
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM