gpt4 book ai didi

java - 更新任务模型 - RuntimeException : DataSource user is null?

转载 作者:行者123 更新时间:2023-11-30 11:33:28 26 4
gpt4 key购买 nike

今天开始学习Play framework,很好用,简单易学。

我成功完成了他们 website 上提供的示例, 但我想对其进行一些修改。

我想看看是否可以更新特定任务的标签,所以我采用了以下方法

首先我添加了一个路由来更新数据

POST    /tasks/:id/update           controllers.Application.updateTask(id: Long)

然后我将以下代码添加到index.scala.html 文件

 @form(routes.Application.updateTask(task.id)) {
<label class="contactLabel">Update note here:</label>
@inputText(taskForm("label")) <br />
}

然后我将Application.java类修改为

public static Result updateTask(Long id) {
Form<Task> taskForm = Form.form(Task.class).bindFromRequest();
if (taskForm.hasErrors()) {
return badRequest(views.html.index.render(Task.all(), taskForm));
} else {
Task.update(id, taskForm.get());
return redirect(routes.Application.tasks());
}
}

最后在 Task.java 中我添加了这段代码

public static void update(Long id, Task task) {
find.ref(id).update(task.label);
}

但是当我执行更新操作时出现这个错误

[RuntimeException: DataSource user is null?]

不用说我注释掉了

 db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
ebean.default="models.*"

在 application.conf 中,因为我已经能够保存和删除数据;但是我无法更新数据库中的数据,为什么会这样,以前有人试过吗,我该如何解决这个错误?

最佳答案

Task 模型上的update(Long id, Task task) 方法应该如下所示:

public static void update(Long id, Task task) {
task.update(id); // updates this entity, by specifying the entity ID
}

因为您将 task 变量作为更新数据传递,所以您不需要像在 find.ref(id) 中那样查找 Task 对象的引用。此外,play.db.ebean.Model 类(带有一个参数)的 update() 方法需要模型 ID 作为参数。

希望这有助于解决您的问题.. :)

关于java - 更新任务模型 - RuntimeException : DataSource user is null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16122884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com