Grails: запрос ассоциаций вызывает groovy.lang.MissingMethodException - PullRequest
3 голосов
/ 04 октября 2010

У меня проблема с Grails, когда у меня есть тестовое приложение с:

class Artist {
static constraints = {
 name()
}

 static hasMany = [albums:Album]
 String name
}

class Album {
 static constraints = {
  name()
}

 static hasMany = [ tracks : Track ]
 static belongsTo = [artist: Artist]

 String name
}

class Track {

 static constraints = {
  name()
  lyrics(nullable: true)
 }

 Lyrics lyrics
 static belongsTo = [album: Album]

 String name
}

Следующий запрос (и более сложный, вложенный запрос на сопоставление) работает в консоли Grails, но завершается неудачно сgroovy.lang.MissingMethodException при запуске приложения с помощью «run-app»:

def albumCriteria = tunehub.Album.createCriteria()
def albumResults = albumCriteria.list {
 like("name", receivedAlbum)
 artist { like("name", receivedArtist) } // Fails here
maxResults(1)
}

Stacktrace:

groovy.lang.MissingMethodException: No signature of method: java.lang.String.call() is applicable for argument types: (tunehub.LyricsService$_getLyrics_closure1_closure2) values: [tunehub.LyricsService$_getLyrics_closure1_closure2@604106]
Possible solutions: wait(), any(), wait(long), each(groovy.lang.Closure), any(groovy.lang.Closure), trim()
at tunehub.LyricsService$_getLyrics_closure1.doCall(LyricsService.groovy:61)
at tunehub.LyricsService$_getLyrics_closure1.doCall(LyricsService.groovy)
(...truncated...)

Есть указатели?

Ответы [ 2 ]

0 голосов
/ 30 декабря 2010

Я часто сталкиваюсь с подобными проблемами с Grails. Код полностью такой, каким он должен быть, но жизненно важные методы GORM загадочно отсутствуют. На данный момент у меня есть хобби-проект, в котором DomainClass.list () не работает. findAll () также должен работать, но он также не работает. Это полная загадка. .methods () включает в себя множество других методов, которые Groovy или Grails должны добавить, но большинство вещей, специфичных для GORM, похоже, отсутствуют. Хотя в BootStrap я могу создавать объекты этого типа и сохранять их в базе данных.

У меня, кажется, нет этой проблемы, когда я создаю проект Grails на работе на моем Mac, но это происходит дома в Windows. Странно, да? Возможно ли, что Grails 1.3.6 на Windows глючит или сломан?

0 голосов
/ 05 октября 2010

что именно означает это ограничение? Мне кажется подозреваемым ...

static constraints = {
    name()
}

это то, что вы хотите?

static constraints = {
    name(nullable:false, blank: false)
}
...