我有一个使用一些临时属性foo的域类。现在,我想在此属性上使用listOrderByFoo,但出现错误“无法解析属性:foo”。有什么方法可以在listOrderByProperty()或findByProperty()中使用瞬态属性吗?
class Bar { String name static transients = ['foo'] def getFoo() { ... } } Bar.findAllByFooIsNotNull() Bar.listOrderByFoo()
抱歉不行。就像Matt在对您的问题的评论中说的那样,由于这些字段被标记为临时字段,因此它们不会持久保存到数据库中,因此您无法查询它们。如果要按瞬时属性查找或列出,则需要编写一个闭包以迭代已设置了瞬时属性的对象列表。您没有可以使用的动态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 }