доступ к автоматически сгенерированным полям и запрос - PullRequest
1 голос
/ 10 ноября 2011

У меня есть следующий фрагмент кода в 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 в соответствующей базе данных.

Question1. Как мне сказать grails, чтобы я мог получить доступ к свойствам доменов, автоматически сгенерированных GORM, таким как id и storeId в этом случае?

Вопрос2. Какой код я должен написать в моем ItemController.groovy в моем действии list, чтобы получить только список элементов, где storeId == storeYYId?

1 Ответ

4 голосов
/ 10 ноября 2011

Вопрос1.Как мне сказать Grails, чтобы я мог получить доступ к свойствам доменов, автоматически сгенерированных GORM, таких как id и storeId в этом случае?

Вы должны иметь возможность доступа к автоматически сгенерированным свойствам точно таким же образомпри доступе к свойствам, которые вы определяете.Причина, по которой вы получаете сообщение об ошибке, заключается в том, что Grails не генерирует автоматически свойство storeId для класса Item, единственные свойства, которые он генерирует автоматически, это version и id (для Item и Store).

Вопрос2.Какой код я должен написать в моем ItemController.groovy в своем действии list, чтобы получить только список элементов, где storeId == storeYYId?

Вам нужно будет написать либо HQL, либокритерий запроса для получения этих элементов.Запрос критерия будет выглядеть примерно так (не проверено)

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

def items = Item.withCriteria {
    store {
        eq('id', storeId)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...