And*_*sky 1 grails grails-orm grails-domain-class
我有两个与一对多关系相关的域 - 一个用户可能有很多关联.我想查看属于该用户的所有关联.我正在使用脚手架插件.因此,应该返回AssociationController中的关联列表的代码看起来很简单:
def index(Integer max) {
respond Association.list(params), model:[associationInstanceCount: Association.count()]
}
Run Code Online (Sandbox Code Playgroud)
在用户视图页面上,我有以下代码:
<g:form controller="Association" >
<fieldset class="buttons">
<g:hiddenField name="user.id" id="user.id" value="${userInstance.id}"/>
<g:actionSubmit class="list" action="index" value="${message(code: 'default.list.label', default: 'Show Associations')}"/>
</fieldset>
</g:form>
Run Code Online (Sandbox Code Playgroud)
当我按下这个动作user.id提交与请求一起发送并且它在params地图内(我用debug检查)但由于某种原因Association.list(params)返回所有关联(对于所有用户),尽管我在params中使用此user.id.A也尝试重命名user.id为just user,它也没有用.看起来像这样.list()应该只用于排序或者我做错了.你能帮我解决这个问题吗?谢谢!
澄清给定的答案:list( params )返回域对象的所有结果,并仅接受排序(order by)和view-port(limit/offset)参数.它没有提供任何where条款(除了discriminator-column之外)
更新:
你可以使用findAllBy*:
Association.findAllByUserId( params.long( 'user.id' ), params )
Run Code Online (Sandbox Code Playgroud)
或者criteria如果您需要使查询更复杂:
Association.withCriteria{
eq 'id', params.long( 'user.id' )
maxResults params.int( 'max' ) ?: 10
firstResult params.int( 'offset' ) ?: 0
if( params.sort && params.order ) order params.sort, params.order
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9368 次 |
| 最近记录: |