我对Grails完全陌生,我正在学习Scott Davis和Jason Rudolph编写的"Getting started with Grails Second Edition"教程。
当我设置BootStrap时,似乎grails没有保存实体,我无法在应用程序中看到它们。我已经尝试过save(failOnError:true),但是它编译并保存没有任何错误。
下面是BootStrap.groovy 的代码package racetrack
import grails.util.GrailsUtil
class BootStrap {
def init = { servletContext ->
switch(GrailsUtil.environment){
case "development":
def jane = new Runner(
firstName:"Jane",
lastName:"Doe",
dateOfBirth:(new Date() - 365*30),
gender:"F",
address:"123 Main St",
city:"Goose",
state:"NC",
zipcode:"12345",
email:"jane@whereever.com"
)
jane.save()
if(jane.hasErrors()){
println jane.errors
}
def trot = new Race(
name:"Turkey Trot",
startDate:(new Date() + 90),
city:"Duck",
state:"NC",
distance:5.0,
cost:20.0,
maxRunners:350
)
trot.save()
if(trot.hasErrors()){
println trot.errors
}
def reg = new Registration(
paid:false,
runner:jane,
race:trot
)
reg.save()
if(reg.hasErrors()){
println reg.errors
}
break
case "production" : break
}
}
def destroy = { }
}
非常感谢
您是否处于开发模式?
也许你应该添加log.debug或println语句来检查你的代码是否被执行。
,你试过.save(flush:true, failOnError:true)
吗?刷新可能有帮助
使用枚举代替字符串。枚举最适合切换场景,可以避免错误。也许GrailsUtil.environment
返回DEVELOPMENT
而不是development
?而不是:
case "development"
使用case Environment.DEVELOPMENT
使用grails.util.Environment enum不能正常工作。因为grails.util.GrailsUtil.environment返回的是字符串,而不是Environment。
你或多或少被迫使用字符串
虽然老了,但我认为如果我发布一些我刚刚发现的东西可能会有所帮助:)
if (GrailsUtil.developmentEnv){
// do dev stuff
}
else {
// do other stuff
}