Play 2.4框架和MySQL

Play 2.4框架和MySQL,mysql,playframework,playframework-2.4,Mysql,Playframework,Playframework 2.4,我在使用MySqL处理Play2.4时遇到问题 例如,如果我基于“play java intro”模板使用activator创建一个应用程序 (见下文详细信息),对应于, 到目前为止一切顺利。不过,这是使用内存中的h2数据库 当我尝试修改项目以使用mysql时,我得到了“执行异常”: 基于“play java intro”模板创建新的play应用程序 指向浏览器 该应用程序运行良好。。可以添加教程中描述的“人员”等。 (2) 现在我修改了一些文件,尝试改用mysql。下面的文件 Pers

我在使用MySqL处理Play2.4时遇到问题

例如,如果我基于“play java intro”模板使用activator创建一个应用程序 (见下文详细信息),对应于, 到目前为止一切顺利。不过,这是使用内存中的h2数据库

当我尝试修改项目以使用mysql时,我得到了“执行异常”:


基于“play java intro”模板创建新的play应用程序 指向浏览器

该应用程序运行良好。。可以添加教程中描述的“人员”等。

(2) 现在我修改了一些文件,尝试改用mysql。下面的文件


Person.java: appapplication.conf: build.sbt:
plugins.sbt: “activator new”使用“play java intro”模板生成的代码(对于MySQL)不起作用。为了使其正常工作,必须修改以下文件:

app/controllers/Application.java

package controllers;
import play.*;
import play.db.ebean.Transactional;
import play.mvc.*;
import views.html.*;
import models.Person;
import play.data.Form;
import java.util.List;
import static play.libs.Json.*;


public class Application extends Controller {

public Result index() {
    return ok(index.render());
}
@Transactional
public Result addPerson() {
    // Person person = Form.form(Person.class).bindFromRequest().get();
    // JPA.em().persist(person);
    Person person = Form.form(Person.class).bindFromRequest().get();
    person.save();
    return redirect(routes.Application.index());
}
@Transactional
public Result getPersons() {
  List<Person> persons  = Person.FIND.findList();
    //List<Person> persons = (List<Person>) JPA.em().createQuery("select p from Person p").getResultList();
    return ok(toJson(persons));
}
package models;
import javax.persistence.*;
import com.avaje.ebean.Model;
@Entity
public class Person extends Model {
    @Id
    public Long id;

    public String name;
    public static Model.Finder<Long, Person> FIND = new Model.Finder<>(Person.class);
}
项目/插件.sbt

name := """play-java-intro_mysql"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)
libraryDependencies ++= Seq(
   evolutions,
   javaJdbc,
   javaJpa,
  "mysql" % "mysql-connector-java" % "5.1.18"
)

routesGenerator := InjectedRoutesGenerator
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.2")

// Web plugins
addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")

// Play enhancer - this automatically generates getters/setters for public fields
// and rewrites accessors of these fields to use the getters/setters. Remove this
// plugin if you prefer not to have this feature, or disable on a per project
// basis using disablePlugins(PlayEnhancer) in your build.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")

// Play Ebean support, to enable, uncomment this line, and enable in your build.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "1.0.0")
conf/application.conf

play.crypto.secret = "changeme"

# The application languages
play.i18n.langs = [ "en" ]

# Database configuration

#H2
#db.default.driver=org.h2.Driver
#db.default.url="jdbc:h2:mem:play"
# db.default.username=sa
# db.default.password=""

# MySQL
db.default.driver=com.mysql.jdbc.Driver

# edit as appropriate.. database called "foo_db" must exit and be accessible by this user, with this password
db.default.url="jdbc:mysql://localhost/foo_db"  
db.default.username=root 
db.default.password=""   

ebean.default=["models.*"]
命令行

   > cd play-java-intro_mysql
   > activator clean compile run
“activator new”使用“play java intro”模板生成的代码(对于MySQL)不起作用。为了使其正常工作,必须修改以下文件:

app/controllers/Application.java

package controllers;
import play.*;
import play.db.ebean.Transactional;
import play.mvc.*;
import views.html.*;
import models.Person;
import play.data.Form;
import java.util.List;
import static play.libs.Json.*;


public class Application extends Controller {

public Result index() {
    return ok(index.render());
}
@Transactional
public Result addPerson() {
    // Person person = Form.form(Person.class).bindFromRequest().get();
    // JPA.em().persist(person);
    Person person = Form.form(Person.class).bindFromRequest().get();
    person.save();
    return redirect(routes.Application.index());
}
@Transactional
public Result getPersons() {
  List<Person> persons  = Person.FIND.findList();
    //List<Person> persons = (List<Person>) JPA.em().createQuery("select p from Person p").getResultList();
    return ok(toJson(persons));
}
package models;
import javax.persistence.*;
import com.avaje.ebean.Model;
@Entity
public class Person extends Model {
    @Id
    public Long id;

    public String name;
    public static Model.Finder<Long, Person> FIND = new Model.Finder<>(Person.class);
}
项目/插件.sbt

name := """play-java-intro_mysql"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)
libraryDependencies ++= Seq(
   evolutions,
   javaJdbc,
   javaJpa,
  "mysql" % "mysql-connector-java" % "5.1.18"
)

routesGenerator := InjectedRoutesGenerator
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.2")

// Web plugins
addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")

// Play enhancer - this automatically generates getters/setters for public fields
// and rewrites accessors of these fields to use the getters/setters. Remove this
// plugin if you prefer not to have this feature, or disable on a per project
// basis using disablePlugins(PlayEnhancer) in your build.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")

// Play Ebean support, to enable, uncomment this line, and enable in your build.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "1.0.0")
conf/application.conf

play.crypto.secret = "changeme"

# The application languages
play.i18n.langs = [ "en" ]

# Database configuration

#H2
#db.default.driver=org.h2.Driver
#db.default.url="jdbc:h2:mem:play"
# db.default.username=sa
# db.default.password=""

# MySQL
db.default.driver=com.mysql.jdbc.Driver

# edit as appropriate.. database called "foo_db" must exit and be accessible by this user, with this password
db.default.url="jdbc:mysql://localhost/foo_db"  
db.default.username=root 
db.default.password=""   

ebean.default=["models.*"]
命令行

   > cd play-java-intro_mysql
   > activator clean compile run
“activator new”使用“play java intro”模板生成的代码(对于MySQL)不起作用。为了使其正常工作,必须修改以下文件:

app/controllers/Application.java

package controllers;
import play.*;
import play.db.ebean.Transactional;
import play.mvc.*;
import views.html.*;
import models.Person;
import play.data.Form;
import java.util.List;
import static play.libs.Json.*;


public class Application extends Controller {

public Result index() {
    return ok(index.render());
}
@Transactional
public Result addPerson() {
    // Person person = Form.form(Person.class).bindFromRequest().get();
    // JPA.em().persist(person);
    Person person = Form.form(Person.class).bindFromRequest().get();
    person.save();
    return redirect(routes.Application.index());
}
@Transactional
public Result getPersons() {
  List<Person> persons  = Person.FIND.findList();
    //List<Person> persons = (List<Person>) JPA.em().createQuery("select p from Person p").getResultList();
    return ok(toJson(persons));
}
package models;
import javax.persistence.*;
import com.avaje.ebean.Model;
@Entity
public class Person extends Model {
    @Id
    public Long id;

    public String name;
    public static Model.Finder<Long, Person> FIND = new Model.Finder<>(Person.class);
}
项目/插件.sbt

name := """play-java-intro_mysql"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)
libraryDependencies ++= Seq(
   evolutions,
   javaJdbc,
   javaJpa,
  "mysql" % "mysql-connector-java" % "5.1.18"
)

routesGenerator := InjectedRoutesGenerator
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.2")

// Web plugins
addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")

// Play enhancer - this automatically generates getters/setters for public fields
// and rewrites accessors of these fields to use the getters/setters. Remove this
// plugin if you prefer not to have this feature, or disable on a per project
// basis using disablePlugins(PlayEnhancer) in your build.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")

// Play Ebean support, to enable, uncomment this line, and enable in your build.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "1.0.0")
conf/application.conf

play.crypto.secret = "changeme"

# The application languages
play.i18n.langs = [ "en" ]

# Database configuration

#H2
#db.default.driver=org.h2.Driver
#db.default.url="jdbc:h2:mem:play"
# db.default.username=sa
# db.default.password=""

# MySQL
db.default.driver=com.mysql.jdbc.Driver

# edit as appropriate.. database called "foo_db" must exit and be accessible by this user, with this password
db.default.url="jdbc:mysql://localhost/foo_db"  
db.default.username=root 
db.default.password=""   

ebean.default=["models.*"]
命令行

   > cd play-java-intro_mysql
   > activator clean compile run
“activator new”使用“play java intro”模板生成的代码(对于MySQL)不起作用。为了使其正常工作,必须修改以下文件:

app/controllers/Application.java

package controllers;
import play.*;
import play.db.ebean.Transactional;
import play.mvc.*;
import views.html.*;
import models.Person;
import play.data.Form;
import java.util.List;
import static play.libs.Json.*;


public class Application extends Controller {

public Result index() {
    return ok(index.render());
}
@Transactional
public Result addPerson() {
    // Person person = Form.form(Person.class).bindFromRequest().get();
    // JPA.em().persist(person);
    Person person = Form.form(Person.class).bindFromRequest().get();
    person.save();
    return redirect(routes.Application.index());
}
@Transactional
public Result getPersons() {
  List<Person> persons  = Person.FIND.findList();
    //List<Person> persons = (List<Person>) JPA.em().createQuery("select p from Person p").getResultList();
    return ok(toJson(persons));
}
package models;
import javax.persistence.*;
import com.avaje.ebean.Model;
@Entity
public class Person extends Model {
    @Id
    public Long id;

    public String name;
    public static Model.Finder<Long, Person> FIND = new Model.Finder<>(Person.class);
}
项目/插件.sbt

name := """play-java-intro_mysql"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)
libraryDependencies ++= Seq(
   evolutions,
   javaJdbc,
   javaJpa,
  "mysql" % "mysql-connector-java" % "5.1.18"
)

routesGenerator := InjectedRoutesGenerator
// The Play plugin
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.4.2")

// Web plugins
addSbtPlugin("com.typesafe.sbt" % "sbt-coffeescript" % "1.0.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.6")
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.3")
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.7")
addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-mocha" % "1.1.0")

// Play enhancer - this automatically generates getters/setters for public fields
// and rewrites accessors of these fields to use the getters/setters. Remove this
// plugin if you prefer not to have this feature, or disable on a per project
// basis using disablePlugins(PlayEnhancer) in your build.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")

// Play Ebean support, to enable, uncomment this line, and enable in your build.sbt
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "1.0.0")
conf/application.conf

play.crypto.secret = "changeme"

# The application languages
play.i18n.langs = [ "en" ]

# Database configuration

#H2
#db.default.driver=org.h2.Driver
#db.default.url="jdbc:h2:mem:play"
# db.default.username=sa
# db.default.password=""

# MySQL
db.default.driver=com.mysql.jdbc.Driver

# edit as appropriate.. database called "foo_db" must exit and be accessible by this user, with this password
db.default.url="jdbc:mysql://localhost/foo_db"  
db.default.username=root 
db.default.password=""   

ebean.default=["models.*"]
命令行

   > cd play-java-intro_mysql
   > activator clean compile run

检查问题,它显示了相同的症状,并已接受答案Your build.sbt看起来不错。我也在使用H2和MySQL。检查问题,它显示了相同的症状,并接受了答案Your build.sbt看起来不错。我也在使用H2和MySQL。检查问题,它显示了相同的症状,并接受了答案Your build.sbt看起来不错。我也在使用H2和MySQL。检查问题,它显示了相同的症状,并接受了答案Your build.sbt看起来不错。我也在使用H2和MySQL。