我可以在对象而不是类上调用GORM“find”方法吗?

时间:2010-02-01 21:14:26

标签: grails groovy gorm

我正在尝试利用groovy比java更具动态的事实。 我想要一个代码块

TypeA type = //do something to build an object
TypeA dbType = TypeA.findBySomethingAndSomething(something, somethingelse)
if(dbType != null)
   type.id = dbType.id
type.save()

但这可以用于支持相同findBySomethingAndSomething方法的多个对象。

可以说

def type = //do something to build an object
def dbType = type.findBySomethingAndSomething(type.identifier, type.otheridentifier)
if(dbType != null)
   type.id = dbType.id
type.save()

有没有“更好”的方法来实现这一目标? 我正在尝试避免使用大型switch语句或if / else系列对每种类型执行基本相同的操作。

1 个答案:

答案 0 :(得分:2)

您始终可以通过instance.getClass()从实例中获取类对象。因此,以下内容应该有效:

instance.getClass().findBySomethingAndSomething(type.identifier, type.otheridentifier)

只要实例的类支持findBySomethingAndSomething