引导程序不保存实体



我对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
}

最新更新