GRAILS:findALL() vs FindBy---(params.id)

Posted

技术标签:

【中文标题】GRAILS:findALL() vs FindBy---(params.id)【英文标题】:GRAILS: findALL() vs FindBy---(params.id) 【发布时间】:2015-09-10 13:33:05 【问题描述】:

大家好,

我正在尝试将参数从 URL 传递给 findAll() 方法。

LINE3我使用 findAll() 来定义鼠标。

LINE2 def house 在我进入页面时会带入参数DELAWARE:http://localhost:8080/TestApp/home/county/DELAWARE

House 将只显示一个实例而不是列表。无论如何传递 url 而不是 ["DELAWARE"]? (请参阅第 3 行)谢谢 :)

 def county() 
    def house = Home.findByCounty(params.id)  //sends only user related address to view
    def mouse = Home.findAll("from Home h where h.county= ?", ["DELAWARE"]);
    if (!house) 
    response.sendError(404)
     else 

    [house:house, mouse:mouse ]
    

工作代码 +1 @Danilo

 def county() 
            def house = Home.findAllByCounty  (params.id)  //sends only county specified thru URL e.g. http://localhost:8080/TestAPP/home/county/DELAWARE
    if (!house) 
        response.sendError(404)
     else 
            [house:house ]
        
    

【问题讨论】:

我不明白你想要什么。老实说 【参考方案1】:

findBy* 最多返回一行,如果要获取所有行,请使用 findAllBy*

要了解 Grails 将如何使用 URL,您必须查看 conf/UrlMappings.groovy。你可能会发现这样的东西:

static mappings = 
    "/$controller/$action?/$id?(.$format)?"
    

这意味着,当您调用 TestApp/home/county/DELAWARE 时,Grails 试图做的是使用主控制器 (HomeController),调用县方法 (def county()...) 并将 DELAWARE 传递为 id

如果在HomeController 的县方法内你有,这应该可以正常工作:

def filteredInstances = Home.findAllByCounty(params.id)

【讨论】:

findAllByCounty(params.id) 做到了,谢谢! +1

以上是关于GRAILS:findALL() vs FindBy---(params.id)的主要内容,如果未能解决你的问题,请参考以下文章

Grails findAll带有排序,顺序,最大值和偏移量?

SQL 到 HQL 查询 Grails

C# FindAll VS Where 速度

JpaRepository vs CRUDRepository findAll

Grails:服务 VS Groovy 类

grails中renderrespondredirect的使用