Java Fetchtype.Eager正在提供NullPointerException

Java Fetchtype.Eager正在提供NullPointerException,java,hibernate,jpa,jboss,Java,Hibernate,Jpa,Jboss,我正在使用hibernate JPA使用双向一对一关系 即使我使用fetchtype,我也会得到一个空指针异常 代码 使用者 我有两个rest方法,一个是JMS队列,用于设置用户,并在插入用户后插入临时令牌(不确定,因为我在使用setter和getter时获得了NPE,所以我尝试先插入用户,然后创建令牌,然后匹配它们,如下所示)。另一个是一个身份验证点,在成功授权时插入令牌。如果不是最佳实践或性能问题是灾难性的,我愿意改变我设置实体的方式 插入方法 另外,我在这里选择了“渴望”,因为我假设一个用

我正在使用hibernate JPA使用双向一对一关系

即使我使用fetchtype,我也会得到一个空指针异常

代码

使用者

我有两个rest方法,一个是JMS队列,用于设置用户,并在插入用户后插入临时令牌(不确定,因为我在使用setter和getter时获得了NPE,所以我尝试先插入用户,然后创建令牌,然后匹配它们,如下所示)。另一个是一个身份验证点,在成功授权时插入令牌。如果不是最佳实践或性能问题是灾难性的,我愿意改变我设置实体的方式

插入方法

另外,我在这里选择了“渴望”,因为我假设一个用户不会有太多的令牌,我可能会改为“懒惰”,但我还有其他字段将被延迟加载,所以这与这个问题无关


p.p.S我知道用户已被插入,因为我有一行记录了获取的用户的用户名,就在
tkn.setUser(newuser)
其他方法之一之前,您是否看到用户未被检索。嗨,nikpon,我编辑了我的问题,以说明我进行了测试,以查看我是否正在使用这段代码获取用户
LOGGER.log(Level.INFO,“user,{0},”,newrippler.getUsername()并记录正确的用户名!这不是
用户
,而是用户的名称。对不起,我很困惑,您能否详细说明“您是否看到用户未被检索”的含义。我假设如果我得到用户名,就意味着我应该拥有user对象。编辑:在数据库中已经插入了用户,因此JMS队列已经插入了用户,当我通过用户名获得用户时,我获得了用户,但是当我尝试将用户附加到令牌时,正如日志所示,出现了错误。我不确定这是否与HibernateEyes有关,您可能会感到困惑,因为它不明显,在您获得用户实例之前需要进行调试。您是否看到该用户未被检索。嗨,nikpon,我编辑了我的问题,以说明我进行了测试,以查看是否获得了一个具有以下代码的用户:
LOGGER.log(Level.INFO,“user,{0},”,newrippler.getUsername())并记录正确的用户名!这不是
用户
,而是用户的名称。对不起,我很困惑,您能否详细说明“您是否看到用户未被检索”的含义。我假设如果我得到用户名,就意味着我应该拥有user对象。编辑:在数据库中已经插入了用户,因此JMS队列已经插入了用户,当我通过用户名获得用户时,我获得了用户,但是当我尝试将用户附加到令牌时,正如日志所示,出现了错误。我不确定这是否与HibernateEyes有关,您可能会感到困惑,因为它并不明显,需要在获得用户实例之前进行调试。
public class Users implements Serializable {
     /** other fields  **/
     @OneToMany(cascade = CascadeType.ALL, mappedBy = "users", fetch = FetchType.EAGER)
     private Collection<Tokens> tokensCollection;

     /** getters and setters for other fields **/

    @XmlTransient
    public Collection<Tokens> getTokensCollection() {
        return tokensCollection;
    }

    public void setTokensCollection(Tokens token) {
        if (!token.getUser().equals(this.Userid)) {
             token.setUser(this);
        }
        this.tokensCollection.add(token);
    }
}
public class Tokens implements Serializable {
     /** other fields  **/

     @JoinColumn(name = "userid", referencedColumnName = "userid")
     @ManyToOne(optional = false, fetch = FetchType.EAGER)
     private Users users;


     /** getters and setters for other fields **/

    @XmlTransient
    public Users getUsers() {
        return users;
    }

    public void setUsers(Users users) {
        if (!users.getTokensCollection().contains(this)) {
             users.getTokensCollection().add(this);
        }
        this.users = users;
    }
}
   Users user = rfl.getUserByUsername(username);
   Tokens tkn = new Tokens();
   tkn.setJWT(token);
   tkn.setUsers(user);

   //not sure if this is making a difference cos I read somewhere that lazily loading is only impacted once you iterate over the collection but it doesn't make a difference cos a) im using eager and b) it works in one place but not the other

   Collection<Tokens> tokenss = user.getTokensCollection();
   for (Tokens token1 : tokenss) {
        System.out.println("User:" + token1.getUsers());
   }

   //rfl is my ejb facade responsible for entity management i.e. merge, persist, remove, find, flush
   rfl.edit(user);
2015-08-24 19:29:31,241 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401)) java.lang.NullPointerException

2015-08-24 19:29:31,241 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at ejb.Tokens.setUsers(Tokens.java:125)

2015-08-24 19:29:31,242 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at ejb.RegisterUserQueue.onMessage(RegisterUserQueue.java:72)

2015-08-24 19:29:31,242 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

2015-08-24 19:29:31,242 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

2015-08-24 19:29:31,243 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

2015-08-24 19:29:31,243 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at java.lang.reflect.Method.invoke(Method.java:483)

2015-08-24 19:29:31,243 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52)

2015-08-24 19:29:31,244 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,244 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)

2015-08-24 19:29:31,244 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)

2015-08-24 19:29:31,245 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,245 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:407)

2015-08-24 19:29:31,246 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.doMethodInterception(Jsr299BindingsInterceptor.java:82)

2015-08-24 19:29:31,246 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.weld.ejb.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:93)

2015-08-24 19:29:31,246 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)

2015-08-24 19:29:31,247 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,247 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)

2015-08-24 19:29:31,247 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63)

2015-08-24 19:29:31,248 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,248 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43)

2015-08-24 19:29:31,248 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,249 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:407)

2015-08-24 19:29:31,249 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:55)

2015-08-24 19:29:31,250 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:83)

2015-08-24 19:29:31,250 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,250 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ee.concurrent.ConcurrentContextInterceptor.processInvocation(ConcurrentContextInterceptor.java:45)

2015-08-24 19:29:31,251 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,251 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)

2015-08-24 19:29:31,252 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,252 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)

2015-08-24 19:29:31,252 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53)

2015-08-24 19:29:31,253 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,253 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51)

2015-08-24 19:29:31,253 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,254 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:251)

2015-08-24 19:29:31,254 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:342)

2015-08-24 19:29:31,254 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:239)

2015-08-24 19:29:31,255 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,255 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)

2015-08-24 19:29:31,255 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,256 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:43)

2015-08-24 19:29:31,256 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,256 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ejb3.security.SecurityContextInterceptor.processInvocation(SecurityContextInterceptor.java:95)

2015-08-24 19:29:31,257 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,257 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64)

2015-08-24 19:29:31,258 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,258 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59)

2015-08-24 19:29:31,258 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,259 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)

2015-08-24 19:29:31,260 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,260 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:55)

2015-08-24 19:29:31,261 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,262 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ejb3.component.messagedriven.MessageDrivenComponentDescription$5$1.processInvocation(MessageDrivenComponentDescription.java:211)

2015-08-24 19:29:31,262 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,263 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.ContextClassLoaderInterceptor.processInvocation(ContextClassLoaderInterceptor.java:64)

2015-08-24 19:29:31,263 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,264 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326)

2015-08-24 19:29:31,264 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:448)

2015-08-24 19:29:31,264 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.AccessCheckingInterceptor.processInvocation(AccessCheckingInterceptor.java:61)

2015-08-24 19:29:31,265 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,265 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.run(InterceptorContext.java:326)

2015-08-24 19:29:31,266 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.PrivilegedWithCombinerInterceptor.processInvocation(PrivilegedWithCombinerInterceptor.java:80)

2015-08-24 19:29:31,266 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,266 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)

2015-08-24 19:29:31,267 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:185)

2015-08-24 19:29:31,267 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:182)

2015-08-24 19:29:31,267 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:309)

2015-08-24 19:29:31,268 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)

2015-08-24 19:29:31,268 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:73)

2015-08-24 19:29:31,269 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at ejb.RegisterUserQueue$$$view107.onMessage(Unknown Source)

2015-08-24 19:29:31,269 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

2015-08-24 19:29:31,269 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

2015-08-24 19:29:31,270 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

2015-08-24 19:29:31,270 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at java.lang.reflect.Method.invoke(Method.java:483)

2015-08-24 19:29:31,270 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ejb3.inflow.MessageEndpointInvocationHandler.doInvoke(MessageEndpointInvocationHandler.java:139)

2015-08-24 19:29:31,271 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.jboss.as.ejb3.inflow.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:73)

2015-08-24 19:29:31,271 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at ejb.RegisterUserQueue$$$endpoint19.onMessage(Unknown Source)

2015-08-24 19:29:31,272 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.hornetq.ra.inflow.HornetQMessageHandler.onMessage(HornetQMessageHandler.java:321)

2015-08-24 19:29:31,272 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.hornetq.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:1116)

2015-08-24 19:29:31,272 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.hornetq.core.client.impl.ClientConsumerImpl.access$500(ClientConsumerImpl.java:56)

2015-08-24 19:29:31,273 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.hornetq.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1251)

2015-08-24 19:29:31,273 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:104)

2015-08-24 19:29:31,273 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

2015-08-24 19:29:31,274 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

2015-08-24 19:29:31,274 ERROR [stderr] (Thread-357 (HornetQ-client-global-threads-934440401))   at java.lang.Thread.run(Thread.java:745)