Использование переходного свойства в методах findBy или listOrderBy
У меня есть класс домена, использующий некоторое временное свойство foo. Теперь я хочу использовать listOrderByFoo для этого свойства, но получаю сообщение об ошибке "не удалось разрешить свойство: foo". Есть ли способ использовать временные свойства в listOrderByProperty() или findByProperty()?
class Bar {
String name
static transients = ['foo']
def getFoo() {
...
}
}
Bar.findAllByFooIsNotNull()
Bar.listOrderByFoo()
1 ответ
Решение
К сожалению нет. Как сказал Мэтт в своем комментарии к вашему вопросу, поскольку эти поля помечены как временные, они не сохраняются в базе данных, и поэтому у вас нет возможности запросить их. Если вы хотите найти или составить список по временному свойству, вам нужно написать закрытие, чтобы перебрать список объектов с уже установленным временным свойством. Нет динамического метода GORM, который вы можете использовать для этого.
def bars = [ new Bar(foo:1), new Bar(foo:2), new Bar(foo:4), new Bar(foo:3) ];
// Find bar with foo=3
bars.find { it.foo == 3 }
// Sort bars by foo
bars.sort { a,b -> a.equals(b)? 0: a.foo<b.foo? -1: 1 }