Hibernate 粒状石英->;线

Hibernate 粒状石英->;线,hibernate,grails,grails-plugin,Hibernate,Grails,Grails Plugin,这是我调用匹配服务的触发器 class TestJob { def matchService static triggers = { cron name: 'firstThread', cronExpression: "0 0/1 12-13 ? * THU" } def group = "threadGroup" def execute() { matchService.playMatch() println "run thread:

这是我调用匹配服务的触发器

    class TestJob { 
     def matchService

 static triggers = {

  cron name: 'firstThread',  cronExpression: "0 0/1 12-13 ? * THU"
  }

 def group = "threadGroup"


    def execute() {
  matchService.playMatch()
  println "run thread: " + String.format('%tH:%<tM:%<tS.%<tL',System.currentTimeMillis())
    }
}
类测试作业{
def匹配服务
静态触发器={
cron名称:“firstThread”,cron表达式:“0 0/1 12-13?*THU”
}
def group=“threadGroup”
def execute(){
matchService.playMatch()

println“run thread:”+String.format(“%tH:%%为什么不在grails应用程序中编写一个控制器方法,并使用javascript和ajax更新页面呢

看看这个插件,它定期更新html页面,并使用ajax调用服务器


您不能像在该示例中那样引用“m”。您需要以某种方式将匹配传递到Runnable中

在这里,您可以使用后台线程插件来保存一些代码

干杯

背风

class MatchException extends RuntimeException {
 String message
 Match match
}


class MatchService {

     /*
      * Rolls back database changes if errors occur
      */
     static transactional = true

     public void calc(Match m) {
      println m.teamH.name + " - " + m.teamA.name
     }

     public playMatch() {

      List<Match> matchList = new ArrayList()

      Cal.get(1).matches.each{
       match ->
        matchList.add(match)
      }


    for(Match m: matchList) {
       if(!m.validate()) {
        throw new MatchException( message: "match not valid!!" , match:m)
       }
        calc(m)
    }
   }
 }