Bootstrap不保存实体

时间:2012-01-02 11:20:57

标签: grails

我是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 = { }
}

非常感谢

4 个答案:

答案 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
}