通过h2-browser和console与Play Framework中的EBean Model类进行交互

时间:2014-03-26 06:28:26

标签: java playframework playframework-2.0 playframework-2.2 ebean

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

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

我遵循的步骤是:

  • 启动play console
  • 执行h2-browser
  • 执行run
  • 转到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运行并稍后能够打开控制台?

1 个答案:

答案 0 :(得分:0)

我希望你不再需要这个了,但是因为你的问题是我搜索相同主题时得到的第一个结果之一,所以这是解决方案,以防其他人需要它。

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

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

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

有关Play控制台的更多信息和提示,我在https://playlatam.wordpress.com

上发现了这篇文章