EbeanのSQLファイル(xx.sql)から直接読み取ったSQLを実行する方法はありますか?
たとえば、いくつかのSQLステートメント(ファイルにすでに書き込まれている値)を含むSQLファイルがある場合、Ebeanを使用してこのSQLファイルを実行する方法はありますか?
EbeanのSQLファイル(xx.sql)から直接読み取ったSQLを実行する方法はありますか?
たとえば、いくつかのSQLステートメント(ファイルにすでに書き込まれている値)を含むSQLファイルがある場合、Ebeanを使用してこのSQLファイルを実行する方法はありますか?
すぐに使用できる少なくとも 2 つのオプションがあります。
Playの進化は DB スキーマを更新することを目的としているため、初期データの挿入にも使用できます (それらがフラットで、まだ作成されていないオブジェクトへの関係を含まない場合)、MySQL のサンプルの進化:
# --- !Ups
INSERT INTO your_table (some_field) VALUES ('New value');
# --- !Downs
DELETE FROM your_table WHERE some_field = 'New value`;
グローバル オブジェクトを使用し、一般的な Ebean の方法を使用して初期データを挿入します。
public void onStart(Application app) {
if (YourModel.find.findRowCount() == 0) {
YourModel newItem = new YourModel();
newItem.someField = "New value";
newItem.save();
YourModel newItem2 = new YourModel();
// etc....
}
}
2番目のアプローチでは、初期データを保持する YAML ファイルを Zentask サンプルのグローバル オブジェクトで読み取る方法を確認できます(サンプルを含むファイルはディレクトリに配置されますconf
) 。
編集:
initial-data.ymlをよく見てみると、タスクとプロジェクトにも関係があるので、固定id
値になっています。したがって、yaml で同じことを行う必要があります。
projects:
- !!models.Project
id: 1
name: Play 2.0
folder: Play framework
tasks:
- !!models.Task
title: Fix the documentation
done: false
folder: Todo
project: !!models.Project
id: 1