有什么方法可以执行直接从 Ebean 中的 SQL 文件(xx.sql)读取的 SQL?
例如,如果我有一个包含多个 SQL 语句(文件中已写入值)的 SQL 文件,有没有办法使用 Ebean 来执行这个 SQL 文件?
有什么方法可以执行直接从 Ebean 中的 SQL 文件(xx.sql)读取的 SQL?
例如,如果我有一个包含多个 SQL 语句(文件中已写入值)的 SQL 文件,有没有办法使用 Ebean 来执行这个 SQL 文件?
您至少有两个开箱即用的选项:
播放进化旨在更新数据库模式,因此您也可以使用它们来插入初始数据(如果它们是平面的,并且不包含与尚未创建的对象的关系),MySQL 的示例进化:
# --- !Ups
INSERT INTO your_table (some_field) VALUES ('New value');
# --- !Downs
DELETE FROM your_table WHERE some_field = 'New value`;
使用 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