Grails:使用run-script来填充H2数据库

时间:2014-12-12 10:32:23

标签: grails groovy run-script

通过run-script命令填充H2数据集时遇到了一些问题:

这是我的域类:

class Lab {

String name

static constraints = {
}

String toString() {
    return name
}

static mapping = {
    sort "name"
}

}

我使用grails generate-all命令生成了控制器和视图。

我写了一个简单的groovy脚本来添加新的Lab:

import groovy.sql.Sql

def grailsApplication
def dataSource = ctx.getBean("dataSource")
def sql = new Sql(dataSource)

Lab a = new Lab(name: "AAAAAAAAAAAAAA")
assert a.save(flush: true)

if (!a.hasErrors()) {
  println "${a.name} saved successfully!"
}

现在,当我运行它时,一切看起来都可以正常工作:

AAAAAAAAAAAAAA saved successfully!
| Script scripts/createLab.groovy complete!

但是当我刷新网页http://localhost:8080/myapp/lab/index时,我看不到任何新的实验室。

我正在使用默认的H2数据库设置。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

您正在使用名为devDB的h2内存数据库(h2: mem :devDb;)。

我在这里看到两个选项。如果您希望有一个物理文件来表示您的数据库,您可以使用文件而不是mem。

h2:file:devDb;

或者您可以将脚本放入Bootstrap.groovy,每次启动应用程序时都会生成这些记录。

这样:

Lab.findOrSaveWhere(name:'AAAAAAAAAA')