java - 通过 h2 浏览器和控制台与 PlayFramework 中的 EBean 模型类进行交互

标签 java playframework playframework-2.0 playframework-2.2 ebean

是否可以在 Play Console 中以交互方式执行命令来更改 Play 应用程序的模型并查看内存数据库中的更改?

我知道可以通过 Play 应用程序中的 h2-browser 命令浏览内存数据库。

我遵循的步骤是:

  • 启动 Play 控制台
  • 执行h2-browser
  • 执行运行
  • 转到http://localhost:9000刷新应用程序并启动数据库
  • 前往http://192.168.56.1:8082/连接数据库

我还知道可以启动控制台并执行 Scala 命令。例如,如果我有一个模型实体 Person 并且我执行:

> play console
...
scala> import Models.Person
scala> val john = new Person("john")
scala> john.save()

它引发了一个异常:

    avax.persistence.PersistenceException: The default EbeanServer has not been defined? This is normally set via the ebean.datasource.default property. Otherwise it should
 be registered programatically via registerServer()
       at com.avaje.ebean.Ebean$ServerManager.getPrimaryServer(Ebean.java:178)
       at com.avaje.ebean.Ebean$ServerManager.access$300(Ebean.java:128)
       at com.avaje.ebean.Ebean.save(Ebean.java:453)
       at play.db.ebean.Model.save(Model.java:91)
...

我认为原因是它使用了不同的 Play 应用程序...是否可以引用在另一个窗口上运行的应用程序?或者在后台执行 Play 上的运行并能够稍后打开控制台?

最佳答案

我希望您不再需要这个,但是由于您的问题是我搜索同一主题时得到的第一个结果之一,因此这里是解决方案,以防其他人需要它。

问题是,当您启动控制台时,您没有使用正在运行的应用程序的同一实例,要在 scala 控制台中使用 Ebean,只需首先使用以下命令运行您的应用程序:

scala> import play.core._
scala> new StaticApplication(new java.io.File("."))

就是这样!现在您可以导入您的 Ebean 模型,实例化它并使用它。

有关 Play 控制台的更多信息和提示,我在 https://playlatam.wordpress.com 上找到了这篇文章

关于java - 通过 h2 浏览器和控制台与 PlayFramework 中的 EBean 模型类进行交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22653130/

相关文章:

java - 根据Java中的元素属性将列表拆分为多个子列表

java - 取消 AlarmManager

java - Play Framework 2.4.x - 带有数据库的子项目

javascript - 当前 Play 应用程序的 Heroku 部署错误

java - 如何在 JComboBox 中显示整数值?

java - 是否可以将 Eclipse 配置为在没有静态导入的情况下使用 "favorites"?

playframework - 在 playframework 项目中使用 scalatest

java - 如何在play Framework 2.0 (Java)中连接到postgresql

scala - 找不到 sbt 启动器 0.11.2

java - Play2 框架初学者。获取<select>中所有选中的元素