我有一个在许多域类上进行常规操作的通用方法
static Map getNumberOfPropertyByTopicIds(def criteriaClass, List ids) {
criteriaClass.createCriteria(). //Some GORM methods used
}
我想要对criteriaClass
上应用的各种内容进行自动填充。但为此,我需要将def criteriaClass
替换为InterfaceForDomainClassBehaviour criteriaClass
。
但我不知道InterfaceForDomainClassBehaviour
是什么。哪个接口/抽象类实现了Domain类行为?
答案 0 :(得分:3)
没有。
Grails使用"约定优于配置",因此与扩展基类,实现一个或多个接口,使用注释等的其他框架不同,您只需放置工件类(域类,服务)等等在grails-app
下的正确目录中,使用适当的类命名约定(域类除外),Grails为您添加行为。你当然可以配置一些东西,例如:使用mapping
块等
在Grails 2之前,添加方法主要是使用Groovy运行时元编程完成的,而在Grails 2中,大多数行为是在编译时使用AST添加的,运行时元编程主要用于动态代码,如findAllByHeightAndWeightAndHairColorAndShoeSize
在每个组合中编译是不切实际的和/或不可能的。
超过100种方法被添加到域类中(反编译一些 - 考虑到Groovy源有多小,看看你的课程结果有多少,并且将数十个添加到控制器中,这真是太神奇了)。但是这一切都是混合的,所以尽管你的域类之间存在很大的重叠,但除非你自己添加它们,否则没有共同的基类或接口。