【问题标题】:Play! always load the initial-data玩!总是加载初始数据
【发布时间】:2012-04-25 03:28:21
【问题描述】:

我的 Bootstrap.java 是:

@OnApplicationStart
public class Bootstrap extends Job {

    public void doJob() {
        // Check if the database is empty
        System.out.println("========================================================" + User.count());
        if(User.count() == 0) {
            Fixtures.loadModels("initial-data.yml");
        }
        System.out.println("========================================================" + User.count());
    }
}

每次我重新启动应用程序时,数据库都会被清理,然后User.count()为0,所以它重新加载初始数据,我对User的所有更改都丢失了。有谁能够帮助我?谢谢。

编辑

在 application.conf 中,我将我的数据库设置为:

%server01.application.mode=PROD
%server01.db=mysql:root:secret@dbname
%server01.jpa.ddl=create
%server01.XForwardedSupport=127.0.0.1

【问题讨论】:

  • 你是如何从命令行启动你的应用程序的?

标签: playframework playframework-1.x


【解决方案1】:

在您的配置文件中,尝试将 ddl 生成设置为 update(或 validate)而不是 create

%server01.jpa.ddl=update

看看this doc

【讨论】:

  • 谢谢。你有道理!也许我应该在 prod 环境中使用 jpa.dll=none?
  • 我会在 prod 中使用validate,以检查我的对象模型是否与关系模型一致。
【解决方案2】:

数据库可能设置在内存中。请检查 application.conf 并使用持久性数据库。

如果我记得你只需要取消注释几行。

【讨论】:

  • 感谢您的回复。但我正在使用持久数据库并在 prod 模式下运行我的应用程序。
猜你喜欢
  • 2015-12-04
  • 2016-10-28
  • 1970-01-01
  • 2011-11-18
  • 2012-11-04
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
相关资源
最近更新 更多