Grails comando objeto vinculação de dados

Grails hasmuito bom suporte para vincular parâmetros de solicitação a um objeto de domínio e suas associações. Isso depende muito da detecção de parâmetros de solicitação que terminam com.id e carregando automaticamente os do banco de dado

No entanto, não está claro como preencher as associações de um objeto de comando. Veja o seguinte exemplo:

class ProductCommand {

    String name
    Collection<AttributeTypeCommand> attributeTypes 
    ProductTypeCommand productType
}

Este objeto tem uma associação única comProductTypeCommand e uma associação múltipla comAttributeTypeCommand. A lista de todos os tipos de atributos e produtos está disponível em uma implementação desta interface

interface ProductAdminService {
    Collection<AttributeTypeCommand> listAttributeTypes();
    Collection<ProductTypeCommand> getProductTypes();
}

Use essa interface para preencher as listas de seleção de produtos e tipos de atributos em um GSP. Eu também injeto dependência nessa interface no objeto de comando e a uso para "simular"attributeTypes eproductType propriedades no objeto de comando

class ProductCommand {

    ProductAdminService productAdminService

    String name   

    List<Integer> attributeTypeIds = []
    Integer productTypeId

    void setProductType(ProductTypeCommand productType) {
        this.productTypeId = productType.id
    }

    ProductTypeCommand getProductType() {
        productAdminService.productTypes.find {it.id == productTypeId}        
    }

    Collection<AttributeTypeCommand> getAttributeTypes() {

        attributeTypeIds.collect {id ->
            productAdminService.getAttributeType(id)
        }
    }

    void setAttributeTypes(Collection<AttributeTypeCommand> attributeTypes) {
        this.attributeTypeIds = attributeTypes.collect {it.id}
    }
}

O que realmente acontece é que oattributeTypeIds eproductTypeIds propriedades @ estão vinculadas aos parâmetros de solicitação relevantes e os getters / setters "simulam"productType eattributeTypes propriedades. Existe uma maneira mais simples de preencher as associações de um objeto de comando?

questionAnswers(4)

yourAnswerToTheQuestion