我是Grails的新手,我正在做Scott Davis和Jason Rudolph的“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 = { }
}
非常感谢
答案 0 :(得分:4)
你是否处于开发模式?
也许你应该添加一个log.debug或println语句来查看你的代码是否被执行。
并试过.save(flush:true, failOnError:true)
?同花顺可能有帮助
答案 1 :(得分:2)
使用枚举而不是字符串。枚举最适合交换机情况,您可以避免错误。也许GrailsUtil.environment
会返回DEVELOPMENT
而非development
?而不是:
case "development"
使用
case Environment.DEVELOPMENT
答案 2 :(得分:0)
使用grails.util.Environment枚举不起作用。因为grails.util.GrailsUtil.environment返回一个字符串,而不是环境。
你或多或少地被迫使用字符串。
答案 3 :(得分:0)
虽然我认为如果我发布了一些我刚刚发现的内容,我觉得它可能会有所帮助。)
if (GrailsUtil.developmentEnv){
// do dev stuff
}
else {
// do other stuff
}