我遇到了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控制台中有效,但在运行带有'run-app'的应用程序时失败并出现groovy.lang.MissingMethodException:
def albumCriteria = tunehub.Album.createCriteria()
def albumResults = albumCriteria.list {
like("name", receivedAlbum)
artist { like("name", receivedArtist) } // Fails here
maxResults(1)
}
堆栈跟踪:
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...)
任何指针?
答案 0 :(得分:0)
这个约束究竟是什么意思?似乎对我怀疑......
static constraints = {
name()
}
你想要什么?
static constraints = {
name(nullable:false, blank: false)
}
答案 1 :(得分:0)
我经常遇到与Grails类似的问题。代码是完全应有的,但重要的GORM方法是神秘的缺席。目前,我有一个业余爱好项目,其中DomainClass.list()不起作用。 findAll()也应该工作,但它也不起作用。这是一个完全的谜。 .methods()确实包含了Groovy或Grails应该添加的许多其他方法,但是大多数GORM特定的东西似乎都缺失了。虽然在BootStrap中,我可以创建该类型的对象并将它们保存到数据库中。
当我在Mac上创建Grails项目时,我似乎没有遇到此问题,但它确实发生在Windows上的家中。怪啊? Windows上的Grails 1.3.6是否可能出现问题或损坏?