gpt4 book ai didi

java - MySQL PersistenceException, Play 中的 "Connection is closed"! 2.2

转载 作者:可可西里 更新时间:2023-11-01 07:08:14 27 4
gpt4 key购买 nike

我正在试用 Play 框架并使用 2.2.0 版本和 Java 版本。

我想使用 MySQL 作为数据库,我已经按照网站上的说明进行操作。我可以运行 evolution 脚本,但无法将任何内容保存到数据库中。在数据库中创建的表。我在尝试调用我的 Controller 中的 Ebean.save() 方法时得到了 [PersistenceException: java.sql.SQLException: Connection is closed!]

我所做的是:

  1. 设置build.sbt并添加插件

    libraryDependencies ++= Seq(
    javaJdbc,
    javaEbean,
    cache,
    "mysql" % "mysql-connector-java" % "5.1.18"
    )
  2. 设置conf/application.conf

    db.default.driver=com.mysql.jdbc.Driver
    db.default.url="jdbc:mysql://localhost:3306/TLC?characterEncoding=UTF-8"
    db.default.user=root
    db.default.pass=secret
  3. Ebean 服务器

    ebean.default="models.*"
  4. 创建 Controller 类 包 Controller ;

    import com.avaje.ebean.Ebean;
    import play.*;
    import play.data.Form;
    import play.mvc.*;
    import models.Bar;
    import views.html.*;

    public class Application extends Controller {

    public static Result index() {
    return ok(index.render("Your new application is ready."));
    }

    public static Result addBar() {
    Bar bar = Form.form(Bar.class).bindFromRequest().get();
    bar.save();
    return redirect(routes.Application.index());
    }
    }
  5. 创建了一个表单

    <form action="@routes.Application.addBar()" method="post">
    <input name="name"/>
    <input type="submit"/>
    </form>
  6. 添加了路由

    POST    /bars                       controllers.Application.addBar()
  7. 当然是模型本身。 封装模型;

    import play.db.ebean.Model;

    import javax.persistence.Entity;
    import javax.persistence.Id;

    @Entity
    public class Bar extends Model {
    @Id
    public String id;
    public String name;

    }
  8. 当然还有在 mysql 中创建数据库本身。

我错过了什么?我已经处理了 4 个小时,但仍然不知道出了什么问题。如果我在内存数据库中使用 h2,它工作得很好。请帮助我。

谢谢!

最佳答案

我遇到了类似的问题,我找到了解决方案。

罪魁祸首是 Bar 实体的 id 属性。您已将 id 定义为 String,但在保存 Bar 时并未设置它。对于 Long,id 值会自动生成,但对于 String,您需要明确设置它。

所以,

Bar bar = Form.form(Bar.class).bindFromRequest().get();
bar.id = UUID.randomUUID().toString();
bar.save();

应该可以解决这个问题。希望这会有所帮助。

关于java - MySQL PersistenceException, Play 中的 "Connection is closed"! 2.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19000438/

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