0

我在通过 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 数据库设置。

我错过了什么吗?

4

1 回答 1

0

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

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

h2:file:devDb;

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

这边走:

Lab.findOrSaveWhere(name:'AAAAAAAAAA')
于 2014-12-12T12:29:08.963 回答