2010-09-06 2 views
0

в моей модели домена, у меня есть метод, который что-то делает с моими данными.Grails: используйте метод домена в именованном запросе

например.

 
class Person { 

    String lastname 
    String firstname 

    String bigname() { 
     return lastname.toUpperCase() 
    } 

    static namedQueries = { 
     withBigname { name -> 
      eq(this.bigname(), name) 
     } 
    } 
} 

Я хочу использовать этот метод как свойство в названном запросе, но

this.bigname()
бросает только
java.lang.IncompatibleClassChangeError
-Exception.

Кто-нибудь знает, как использовать методы домена в критериях и именованных запросах?


Update: Теперь я попытался это:

class Person { 

    String lastname 
    String firstname 
    String bigname 

    static transients = [ 'bigname' ] 

    def getBigname() { 
     return lastname.toUpperCase() 
    } 

    static namedQueries = { 
     withBigname { name -> 
      eq('bigname', name) 
     } 
    } 
} 

Но это приводит только к "не может решить свойство: bigname" -exception ...

+0

Вы пытаетесь запросить временное поле, удалить струнный bigname или удалить переходный и метод getBigname разрешить обработку запросов. Прочтите документы, похоже, у вас нет четкого представления о временном использовании. –

ответ

0

Try назвать метод в JavaBean геттер и сеттер обозначение. Метод переименования bigname() - getBigname().

+0

Это дает мне «не удалось разрешить свойство: bigname» ... – Jan

0

На статическом замыкании у вас нет this. Вам нужно либо сохранить bigname в базе данных, либо сделать какие-то критерии, не учитывающие регистр.

-1

выглядит, как вы пытаетесь сделать это:

class Person { 

    String lastname 
    String firstname 

    static namedQueries = { 
     withName { name -> 
      eq('lastname', name, [ignoreCase: true]) 
     } 
    } 
} 
+0

извините, это был только пример. реальная задача намного сложнее. – Jan

1

Вы не можете использовать методы класса запросов, поскольку запросы фактически переведены на SQL.

Возможно, вам удастся получить то, что вам нужно, написав сложность в SQL «Ограничение SQL». Поиск по «SQL» Ограничение на http://grails.org/doc/2.0.x/guide/GORM.html

HTH

Смежные вопросы