grails - Grails:使用运行脚本填充H2数据库

标签 grails groovy run-script

我有一些问题可以通过run-script命令填充我的H2数据 enzyme :

这是我的域类:

class Lab {

String name

static constraints = {
}

String toString() {
    return name
}

static mapping = {
    sort "name"
}

}

我生成了 Controller ,并使用grails generate-all命令进行了查看。

我编写了一个简单的常规脚本来添加新的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时,看不到任何新创建的Lab。

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

我错过了什么吗?

最佳答案

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

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

h2:file:devDb;

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

这条路:
Lab.findOrSaveWhere(name:'AAAAAAAAAA')

关于grails - Grails:使用运行脚本填充H2数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27441695/

相关文章:

hibernate - OutOfMemoryError : unable to create new native thread AWS

grails - 了解 grails 中的 hasMany 行为以及如何保存关系

grails - 在 grails 中验证密码和确认密码的最佳方法是什么?

java - IntelliJ + 常规 DSL : How to exclude files from being compiled by groovy plugin?

python - 如何在 linux 终端中运行更新的 python 脚本

tomcat - 使用intellij idea生成的违规类部署grails war

groovy - Geb 和 Spock 测试框架有什么区别

java - NoClassDefFoundError : groovy/lang/binding

iOS:如何在 Xcode 11 中自动升级我的 CFBundleVersion 和 CFBundleShortVersionString? (我的旧脚本不再起作用了)

ios - 如何编写运行脚本来解压项目目录中的文件?