导入xx.sql文件以使用Ebean执行

时间:2012-08-14 08:30:11

标签: sql playframework-2.0 ebean

有没有办法直接从Ebean中的SQL文件(xx.sql)读取SQL?

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

1 个答案:

答案 0 :(得分:1)

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

  1. 播放evolutions旨在更新数据库架构,因此您也可以使用它们来插入初始数据(如果它们是平面的,并且不包含与尚未创建的对象的关系),示例演变对于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.... 
        }
    }
    
  3. 对于第二种方法,您可以检查如何使用Global object of Zentask sample读取保存初始数据的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