我有一个使用一些瞬态属性foo的域类。现在我想在这个属性上使用listOrderByFoo,但是我收到错误“无法解析属性:foo”。 有没有办法在listOrderByProperty()或findByProperty()中使用瞬态属性?
class Bar {
String name
static transients = ['foo']
def getFoo() {
...
}
}
Bar.findAllByFooIsNotNull()
Bar.listOrderByFoo()
答案 0 :(得分:11)
不幸的是没有。就像Matt在他对你的问题的评论中所说,由于这些字段被标记为瞬态,因此它们不会持久存储到数据库中,因此您无法查询它们。如果要通过瞬态属性查找或列出,则需要编写一个闭包来迭代已设置transient属性的对象列表。没有动态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 }