播放2.4 Finder引发Null指针异常 [英] Play 2.4 Finder throws Null Pointer Exception

查看:87
本文介绍了播放2.4 Finder引发Null指针异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前在Play 2.4中遇到Finder实例的问题,该实例在使用时会返回空指针异常。这是尝试使用它的代码

I'm currently having an issue with a Finder instance in Play 2.4 whereby it returns a null pointer exception when used. Here is the code trying to use it

public ExpressionList<ClientAuthorization> getAuthorizationQuery(String appId) {
        return ClientAuthorization.find.where().eq("app_id", appId).eq("active", 1);
    }

和模型类

package models;

import com.avaje.ebean.Model;

import javax.persistence.*;
import java.sql.Timestamp;


@Entity
@Table(name="client_authorization")
public class ClientAuthorization extends Model {

    public static final Finder<Long, ClientAuthorization> find = new Finder<>(ClientAuthorization.class);


    @Id
    public long clientAuthorizationId;

    @Column(nullable=false, length=45)
    public String appId;

    @Column(nullable=false, length=45)
    public String apiKey;

    @Column(nullable=false)
    public boolean active;

    @Column(nullable = false)
    public boolean isAdmin;

    @Column(nullable=false)
    public Timestamp createdDate;

    @Column(nullable=false)
    public Timestamp updatedDate;

    @PrePersist
    protected void createdAt() {
        this.createdDate = new Timestamp(System.currentTimeMillis());
        this.updatedDate = new Timestamp(System.currentTimeMillis());
    }

    @PostPersist
    protected void updatedAt() {
        this.updatedDate = new Timestamp(System.currentTimeMillis());
    }


}

这很好对于我曾经在Play中创建的每个模型,所以我不确定发生了什么。这就是我得到的

This works fine for every model I've ever created in Play, so I'm not sure what's going on. Here is what I get

我非常感谢我提供的任何帮助可以得到。这让我为正在进行的升级项目而疯狂。我所做的最后一次升级进展顺利,但是这给我带来了问题。

I greatly appreciate any help I can get. This is driving me crazy in an upgrade project I'm working on. The last upgrade I did went just fine, but this one is giving me problems.

其他信息:在ClientAuthorization静态调用之后,调用where()失败来找到

Additional info: It fails on the call to where() just after the ClientAuthorization static call to find

更新

因为它出现在评论中,所以这是不只是一个NPE是什么问题,我已经知道了。由于某种原因,查找器未初始化。但是,看看这个模型,以及我写过的每个模型,都没有发生这种情况的原因。

Since it came up in a comment, this is not just a question of what a NPE is, I know that already. For some reason the finder is not initialized. However, looking at this model, and every model I've ever written, there is no reason for this to be happening.

这里是堆栈跟踪

@6o9455j27 - Internal server error, for (GET) [/] ->

play.api.http.HttpErrorHandlerExceptions$$anon$1: Execution exception[[NullPointerException: null]]
    at play.api.http.HttpErrorHandlerExceptions$.throwableToUsefulException(HttpErrorHandler.scala:265) ~[play_2.11-2.4.4.jar:2.4.4]
    at play.api.http.DefaultHttpErrorHandler.onServerError(HttpErrorHandler.scala:191) ~[play_2.11-2.4.4.jar:2.4.4]
    at play.api.GlobalSettings$class.onError(GlobalSettings.scala:179) [play_2.11-2.4.4.jar:2.4.4]
    at play.api.DefaultGlobal$.onError(GlobalSettings.scala:212) [play_2.11-2.4.4.jar:2.4.4]
    at play.api.http.GlobalSettingsHttpErrorHandler.onServerError(HttpErrorHandler.scala:94) [play_2.11-2.4.4.jar:2.4.4]
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$9$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:151) [play-netty-server_2.11-2.4.4.jar:2.4.4]
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anonfun$9$$anonfun$apply$1.applyOrElse(PlayDefaultUpstreamHandler.scala:148) [play-netty-server_2.11-2.4.4.jar:2.4.4]
    at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:36) [scala-library-2.11.6.jar:na]
    at scala.util.Failure$$anonfun$recover$1.apply(Try.scala:215) [scala-library-2.11.6.jar:na]
    at scala.util.Try$.apply(Try.scala:191) [scala-library-2.11.6.jar:na]
    at scala.util.Failure.recover(Try.scala:215) [scala-library-2.11.6.jar:na]
    at scala.concurrent.Future$$anonfun$recover$1.apply(Future.scala:324) [scala-library-2.11.6.jar:na]
    at scala.concurrent.Future$$anonfun$recover$1.apply(Future.scala:324) [scala-library-2.11.6.jar:na]
    at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:32) [scala-library-2.11.6.jar:na]
    at play.api.libs.iteratee.Execution$trampoline$.executeScheduled(Execution.scala:109) [play-iteratees_2.11-2.4.4.jar:2.4.4]
    at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:71) [play-iteratees_2.11-2.4.4.jar:2.4.4]
    at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:40) [scala-library-2.11.6.jar:na]
    at scala.concurrent.impl.Promise$DefaultPromise.tryComplete(Promise.scala:248) [scala-library-2.11.6.jar:na]
    at scala.concurrent.Promise$class.complete(Promise.scala:55) [scala-library-2.11.6.jar:na]
    at scala.concurrent.impl.Promise$DefaultPromise.complete(Promise.scala:153) [scala-library-2.11.6.jar:na]
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:23) [scala-library-2.11.6.jar:na]
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:40) [akka-actor_2.11-2.3.13.jar:na]
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:397) [akka-actor_2.11-2.3.13.jar:na]
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [scala-library-2.11.6.jar:na]
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [scala-library-2.11.6.jar:na]
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [scala-library-2.11.6.jar:na]
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [scala-library-2.11.6.jar:na]
Caused by: java.lang.NullPointerException: null
    at com.avaje.ebean.Model$Find.query(Model.java:547) ~[avaje-ebeanorm-4.6.2.jar:na]
    at com.avaje.ebean.Model$Find.where(Model.java:741) ~[avaje-ebeanorm-4.6.2.jar:na]
    at repositories.AuthRepository.getAuthorizationQuery(AuthRepository.java:12) ~[classes/:na]
    at interceptors.AuthInterceptor.call(AuthInterceptor.java:31) ~[classes/:na]
    at play.core.j.JavaAction$$anonfun$7.apply(JavaAction.scala:94) ~[play_2.11-2.4.4.jar:2.4.4]
    at play.core.j.JavaAction$$anonfun$7.apply(JavaAction.scala:94) ~[play_2.11-2.4.4.jar:2.4.4]
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) [scala-library-2.11.6.jar:na]
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) [scala-library-2.11.6.jar:na]
    at play.core.j.HttpExecutionContext$$anon$2.run(HttpExecutionContext.scala:40) ~[play_2.11-2.4.4.jar:2.4.4]
    at play.api.libs.iteratee.Execution$trampoline$.execute(Execution.scala:70) [play-iteratees_2.11-2.4.4.jar:2.4.4]
    at play.core.j.HttpExecutionContext.execute(HttpExecutionContext.scala:32) ~[play_2.11-2.4.4.jar:2.4.4]
    at scala.concurrent.impl.Future$.apply(Future.scala:31) ~[scala-library-2.11.6.jar:na]
    at scala.concurrent.Future$.apply(Future.scala:492) ~[scala-library-2.11.6.jar:na]
    at play.core.j.JavaAction.apply(JavaAction.scala:94) ~[play_2.11-2.4.4.jar:2.4.4]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:105) ~[play_2.11-2.4.4.jar:2.4.4]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4$$anonfun$apply$5.apply(Action.scala:105) ~[play_2.11-2.4.4.jar:2.4.4]
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21) ~[play_2.11-2.4.4.jar:2.4.4]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:104) ~[play_2.11-2.4.4.jar:2.4.4]
    at play.api.mvc.Action$$anonfun$apply$1$$anonfun$apply$4.apply(Action.scala:103) ~[play_2.11-2.4.4.jar:2.4.4]
    at scala.Option.map(Option.scala:146) ~[scala-library-2.11.6.jar:na]
    at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:103) ~[play_2.11-2.4.4.jar:2.4.4]
    at play.api.mvc.Action$$anonfun$apply$1.apply(Action.scala:96) ~[play_2.11-2.4.4.jar:2.4.4]
    at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:524) ~[play-iteratees_2.11-2.4.4.jar:2.4.4]
    at play.api.libs.iteratee.Iteratee$$anonfun$mapM$1.apply(Iteratee.scala:524) ~[play-iteratees_2.11-2.4.4.jar:2.4.4]
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:560) ~[play-iteratees_2.11-2.4.4.jar:2.4.4]
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMapM$1.apply(Iteratee.scala:560) ~[play-iteratees_2.11-2.4.4.jar:2.4.4]
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$13.apply(Iteratee.scala:536) ~[play-iteratees_2.11-2.4.4.jar:2.4.4]
    at play.api.libs.iteratee.Iteratee$$anonfun$flatMap$1$$anonfun$apply$13.apply(Iteratee.scala:536) ~[play-iteratees_2.11-2.4.4.jar:2.4.4]
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) [scala-library-2.11.6.jar:na]
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) [scala-library-2.11.6.jar:na]
    ... 6 common frames omitted


推荐答案

如果有人遇到类似问题,请仔细检查配置。默认的Model超类不关心它。关于 aplication.conf orm.xml 的详细信息可以在这里找到:

In case somebody runs into a similar problem, the config should be double-checked. The default Model superclass does not care of it. Details about aplication.conf and orm.xml can be found here:

EBean配置

这篇关于播放2.4 Finder引发Null指针异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆