私はPlayフレームワークを試して、2.2.0バージョンとJavaバージョンを使用しています。MySQL PersistenceException、Playで "Connection is closed"が発生しました。 2.2
私はデータベースとしてMySQLを使いたいと思っています。私はサイトの指示に従っています。私は進化のスクリプトを実行することができますが、私はデータベースに何も保存することはできません。データベースに作成されたテーブル。私のコントローラーにあるEbean.save()メソッドを呼び出そうとしたときに[PersistenceException: java.sql.SQLException: Connection is closed!]
を取得しました。
はbuild.sbtを設定し、研究会/ 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
設定し
libraryDependencies ++= Seq( javaJdbc, javaEbean, cache, "mysql" % "mysql-connector-java" % "5.1.18" )
プラグインを追加しました:私はある何をやったか
Ebeanサーバー
ebean.default="models.*"
作成コントローラクラス package controllers;フォーム
<form action="@routes.Application.addBar()" method="post"> <input name="name"/> <input type="submit"/> </form>
作成
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()); } }
経路
POST /bars controllers.Application.addBar()
コースのモデル自体を追加しました。 パッケージモデル。
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; }
もちろん、mysqlにデータベース自体を作成します。
私は何を欠席しましたか?私は4時間のようにこの上にいたが、何が間違っているかまだ分かっていない。メモリデータベースにh2を使用した場合、うまく動作します。私を助けてください。
ありがとうございます!
DBセッション内でDB関連の作業を行う必要があります。あなたが説明していることから、あなたのオブジェクトを保存しようとしている瞬間に、アクティブなセッションがない(またはそれを使用していない)ように見えます。 EBean APIの場合は、基礎となるテーブルへの接続が不足している可能性があります。この例を見てください:http://www.avaje.org/ebean/getstarted_props.html – Ashalynd
これを解決しましたか?同様の問題があります...奇妙なことにEbean.update(obj)が動作しています(もっと複雑な作業を行うまで)が、Ebean.save(obj)は決して動作しません。 Maddening。 – chris
私はこれを私の目的のために解決しました。 JPAに切り替わりました(すぐにebeanが外部パッケージに移動するようです)、接続エラーもなく、SQLエラーによる(以前の)エラーも発生しました。コンソールにエラーを出力するようにebeanを設定していれば(これを行う方法がわからない)、SQLエラーが発生し、結果として接続が閉じられました。それがあなたのために起こっているかどうかを確認したいかもしれません。 – chris