Pergunta

Estou tentando atualizar meu aplicativo para Grails 2.0 e enfrento o seguinte problema.Eu tenho um atributo de domínio privado com getter público.Gostaria de consultar esse atributo em createCriteria e ele me retorna: exceção "Não foi possível resolver a propriedade ..." mesmo se o getter for público.Eu vi um bug Jira http://jira.grails.org/browse/GRAILS-8498?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel mas ainda não está funcionando.Grails 1.3.7 funcionou bem.

Meu código é como: Classe de domínio

class MyClass {
   protected boolean reserved = false

   protected void setReserved(boolean reserved) {
        this.reserved = reserved
    }

   public boolean getReserved() {
        return this.reserved
    }
}

Consulta

def c = MyClass.createCriteria()
def results = c.list {
   eq('reserved', true)
}

Pode ser o problema é que o nome do atributo 'reservado' tornou-se uma palavra-chave reservada no grails porque parece que para outros atributos de nomes diferentes ele funciona ...

Foi útil?

Solução

O problema aqui é que, para permitir que as propriedades da classe de domínio sejam persistentes automaticamente sem ter que configurá-las, os campos devem ser propriedades, ou seja, eles devem ter um par getter / setter público do mesmo tipo.

O Groovy faz isso quando você adiciona um campo público - torna o campo privado e cria um getter e um setter públicos.Mas se você já tiver um getter ou setter, ele não fará isso e, se ambos não forem públicos, não serão considerados uma propriedade (no sentido do JavaBean), portanto o campo não é persistente.Portanto, é mais do que isso, o campo não pode ser consultado - nem mesmo está sendo armazenado ou atualizado no banco de dados.

Outras dicas

Depois de alguns minutos de exame, percebi que o problema está no setter protegido.Se eu definir o setter como público, ele funcionará.Parece ser um bug do Grails e, portanto, criei um bug do Grails, consulte: http://jira.grails.org/browse/GRAILS-8637

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top