簡體   English   中英

java.lang.ClassCastException:models.Task無法轉換為models.Task在Play Framework上

[英]java.lang.ClassCastException: models.Task cannot be cast to models.Task on Play Framework

我使用Akka actor在Play Framework中創建了工作隊列,然后從全局對象啟動actor系統。 JobManager actor(如下所示)每分鍾檢查一次數據庫,如果有未完成的任務,它將向Worker actor發送消息以對其進行處理。 在此之下,您可以看到我的任務模型。

case class CheckDatabase()

class JobManager extends Actor {

  def receive = { case CheckDatabase() => CheckIt }

  def CheckIt = {

    val allTasks: List[Task] = new Model.Finder(classOf[String], classOf[Task]).all()
    val taskBuffer = new ArrayBuffer[Boolean]
    for(i <- 0 until allTasks.size){ taskBuffer += allTasks.get(i).isRunning }
    if(taskBuffer.forall(taskIsRunning => taskIsRunning == false)){
      val nextTask = nextOntheLine
      if(nextTask != null ){
        val worker = context.system.actorOf(Props[Worker], name = nextTask.id)
        worker ! StartWorking(nextTask)
      } else {
        println("Status: idle...")
      }
    }
  }

  def nextOntheLine: Task = {

    val tasks = new Model.Finder(classOf[String], classOf[Task])
      .where
      .eq("isDone", false)
      .eq("isCancelled", false)
      .eq("isRunning", false)
      .orderBy("uploadDate asc")
      .findList()

    if(tasks.size > 0){
      tasks.get(0)
    } else {
      null
    }
  }
}

@Entity
public class Task extends Model {

    @Id
    public String id; 

    public String email; 

    public boolean isDone; 

    public void setIsDone(boolean _isdone){
        isDone = _isdone;
    }

    public boolean isRunning; 

    public void setIsRunning(boolean _isrunning){
        isRunning = _isrunning;
    }

    public boolean isCancelled; 

    public void setIsCancelled(boolean _iscancelled){
        isCancelled = _iscancelled;
    }

    @Formats.DateTime(pattern="hh:mm:ss, dd/MM/yyyy")
    public Date uploadDate = new Date(); 

}

它開始正常運行,當我發送請求時,它啟動了作業並完成了作業,但是在處理作業期間(使用JobManager檢查數據庫時),我得到了java.lang.ClassCastException: models.Task cannot be cast to models.Task錯誤。 如您所見,演員是用Scala編寫的,而我的模型是用Java編寫的。 可能是由那引起的嗎?

我在Java中做另一個類,並重寫了里面的所有方法JobManager為靜態方法。 然后,我將它們導入了Scala代碼,並解決了問題。 問題似乎在於這是一個Java項目,並且模型根據該項目工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM