1

EbeanのSQLファイル(xx.sql)から直接読み取ったSQLを実行する方法はありますか?

たとえば、いくつかのSQLステートメント(ファイルにすでに書き込まれている値)を含むSQLファイルがある場合、Ebeanを使用してこのSQLファイルを実行する方法はありますか?

4

1 に答える 1

1

すぐに使用できる少なくとも 2 つのオプションがあります。

  1. Playの進化は DB スキーマを更新することを目的としているため、初期データの挿入にも使用できます (それらがフラットで、まだ作成されていないオブジェクトへの関係を含まない場合)、MySQL のサンプルの進化:

    # --- !Ups
    INSERT INTO your_table (some_field) VALUES ('New value');
    
    # --- !Downs
    DELETE FROM your_table WHERE some_field = 'New value`;
    
  2. グローバル オブジェクトを使用し、一般的な 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
于 2012-08-14T09:37:54.767 に答える