1

有什么方法可以执行直接从 Ebean 中的 SQL 文件(xx.sql)读取的 SQL?

例如,如果我有一个包含多个 SQL 语句(文件中已写入值)的 SQL 文件,有没有办法使用 Ebean 来执行这个 SQL 文件?

4

1 回答 1

1

您至少有两个开箱即用的选项:

  1. 播放进化旨在更新数据库模式,因此您也可以使用它们来插入初始数据(如果它们是平面的,并且不包含与尚未创建的对象的关系),MySQL 的示例进化:

    # --- !Ups
    INSERT INTO your_table (some_field) VALUES ('New value');
    
    # --- !Downs
    DELETE FROM your_table WHERE some_field = 'New value`;
    
  2. 使用 Global 对象并使用普通 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.... 
        }
    }
    

对于第二种方法,您可以检查如何使用Zentask 示例的全局对象读取包含初始数据的 YAML 文件(带有示例的文件放在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 回答