假设我有以下一对多关系:
Site has many Users
User belongs to one Site
我已经建立了这样的关系
class Site {
static hasMany = [users:User]
...
}
和
class User {
static belongsTo = [site:Site]
int number
String username
...
}
基本上我想更新特定站点上特定用户的用户名并返回用户对象。我知道站点和新用户名,所以我有一个函数尝试使用标准构建器查找相应的连接:
class funcClass {
User func(Site site, int number, String newUserName) {
def results = User.createCriteria()
results.list = {
eq('number', number)
site {
idEq(site.id)
}
}
...
def user = results[0]
...
return user
}
}
我得到一个类似于以下的异常:
groovy.lang.MissingMethodException: No signature of method: static com.myapp.Site.call() is application for arguemtns types: ( funcClass$_closure )
使用 Criteria Builder 可以做到这一点吗?我意识到我可以用另一种方式进行查询,在那里我从站点到用户建立标准,但是我必须遍历站点的所有用户,以找到与我要更新的数字匹配的用户。我只需要使用 HQL 查询吗?