访问自动生成的字段和查询

时间:2011-11-10 11:50:36

标签: grails groovy

我在ItemController.groovy

中有以下代码
def list = {
    params.max = 60
    def storeYYId = params.id

        [itemInstanceList: Item.list(params), itemInstanceTotal: Item.count()]
}

我在Item.groovy中有以下内容:

class Item {
    String itemName
    static belongsTo = [store:Store]


    static constraints = {
        itemName(blank:false)
        storeId()
    }
}

这给了我一个错误,因为它告诉我没有storeId属性,但是因为store_id是相应数据库中Store表的外键。

问题1。如何告诉grails让我访问GORM自动生成的域的属性,如本例中的id和storeId?

问题2。我应该在列表操作中的ItemController.groovy中编写什么代码,以便仅检索storeId == storeYYId的项目列表?

1 个答案:

答案 0 :(得分:4)

  

问题1。我如何告诉grails让我访问的属性   由GORM自动生成的域,如id和storeId   这个案子?

您应该能够以与访问定义的属性完全相同的方式访问自动生成的属性。您收到错误的原因是Grails不会自动为storeId类生成Item属性,它将自动生成的唯一属性是versionid(适用于ItemStore)。

  

问题2。我应该在我的ItemController.groovy中编写什么代码   列表操作,以便只检索其中的项目列表   storeId == storeYYId?

您需要编写HQL或条件查询来检索这些项目。条件查询看起来像这样(未经测试)

// Get all items that have storeId = 6
def storeId = 6

def items = Item.withCriteria {
    store {
        eq('id', storeId)
    }
}