Hibernate Grails 2.2.2没有为参数2指定值

Hibernate Grails 2.2.2没有为参数2指定值,hibernate,grails,Hibernate,Grails,这是我的问题 我在班上有三个领域 Contributor.groovy Project.groovy 类项目{ 静态hasMany=[仪器:仪器] 静态belongsTo=[contributor:contributor] } Instrument.groovy 类仪器{ 静态belongsTo=[Contributor,Project] static hasMany=[项目:项目,贡献者:贡献者] } 然后我有一个服务,它有一个查找所有包含仪器列表的项目的功能 def getProjec

这是我的问题

我在班上有三个领域

Contributor.groovy

Project.groovy

类项目{
静态hasMany=[仪器:仪器]
静态belongsTo=[contributor:contributor]
}
Instrument.groovy

类仪器{
静态belongsTo=[Contributor,Project]
static hasMany=[项目:项目,贡献者:贡献者]
}
然后我有一个服务,它有一个查找所有包含仪器列表的项目的功能

def getProjectsByInstruments(){
def result=null
def instrument=instrument.findByName(“手风琴”);
def instrumentList=new HashSet();
仪器列表。添加(仪器)
结果=Project.findByInstruments(仪器列表)
返回结果
}
当我执行该函数时,会收到以下错误消息:

感谢您的帮助

尝试此查询

Project .withCriteria {
  instruments{
    eq('name', 'Accordion')
  }
}

发布整个堆栈跟踪将很容易找到问题刚才用完整堆栈跟踪编辑了我的帖子我绞尽脑汁试图记住这是一个有效的动态查找程序:Project.findByInstruments(instrumentList),因为我不相信它是。为什么不呢`类项目有很多=[instruments:Instrument]``你能解释一下吗?谢谢你你的解决方案行得通,你能解释一下为什么我的不行吗?无论如何,在尝试此操作之后,我的错误现在显示为:“没有为参数1指定值”。有人能解释一下这个错误以及应该如何解决吗?
2013-12-09 11:45:44,711 [http-bio-8081-exec-7] INFO  soundshare.ProjectController  - Entering Action /project/by_instrument
2013-12-09 11:45:44,712 [http-bio-8081-exec-7] INFO  soundshare.ProjectController  - Instrument : ACCORDION
2013-12-09 11:45:44,714 [http-bio-8081-exec-7] DEBUG hibernate.SQL  - select this_.id as id17_0_, this_.version as version17_0_, this_.name as name17_0_ from instrument this_ where this_.name=? limit ?
Hibernate: select this_.id as id17_0_, this_.version as version17_0_, this_.name as name17_0_ from instrument this_ where this_.name=? limit ?
2013-12-09 11:45:44,717 [http-bio-8081-exec-7] TRACE sql.BasicBinder  - binding parameter [1] as [VARCHAR] - Accordion
2013-12-09 11:45:44,717 [http-bio-8081-exec-7] TRACE sql.BasicExtractor  - found [1] as column [id17_0_]
2013-12-09 11:45:44,727 [http-bio-8081-exec-7] TRACE sql.BasicExtractor  - found [1] as column [version17_0_]
2013-12-09 11:45:44,727 [http-bio-8081-exec-7] TRACE sql.BasicExtractor  - found [Accordion] as column [name17_0_]
2013-12-09 11:45:44,729 [http-bio-8081-exec-7] DEBUG hibernate.SQL  - select this_.id as id31_0_, this_.version as version31_0_, this_.contributor_id as contribu3_31_0_, this_.description as descript4_31_0_, this_.musical_style_id as musical5_31_0_, this_.name as name31_0_, this_.open_to_public as open7_31_0_, this_.poster_url as poster8_31_0_ from project this_ where this_.id=? limit ?
Hibernate: select this_.id as id31_0_, this_.version as version31_0_, this_.contributor_id as contribu3_31_0_, this_.description as descript4_31_0_, this_.musical_style_id as musical5_31_0_, this_.name as name31_0_, this_.open_to_public as open7_31_0_, this_.poster_url as poster8_31_0_ from project this_ where this_.id=? limit ?
| Error 2013-12-09 11:45:44,729 [http-bio-8081-exec-7] ERROR util.JDBCExceptionReporter  - No value specified for parameter 2
| Error 2013-12-09 11:45:44,742 [http-bio-8081-exec-7] ERROR errors.GrailsExceptionResolver  - SQLException occurred when processing request: [POST] /project/by_instrument - parameters:
instrument: accordion
No value specified for parameter 2. Stacktrace follows:
Message: No value specified for parameter 2
Project .withCriteria {
  instruments{
    eq('name', 'Accordion')
  }
}