哪个 interface/abstract class 适用于 grails Domain class 行为?

Which interface/abstract class is for grails Domain class behaviour?

我有一个通用方法可以在多个域上执行通用操作class

static Map getNumberOfPropertyByTopicIds(def criteriaClass, List ids) {
  criteriaClass.createCriteria(). //Some GORM methods used
}

我想要在 criteriaClass 上应用的各种内容自动完成。但是为此我需要将 def criteriaClass 替换为 InterfaceForDomainClassBehaviour criteriaClass.

但我不知道InterfaceForDomainClassBehaviour是什么。哪个 interface/abstract class 实现域 class 行为?

没有。

Grails 使用 "convention over configuration",因此与扩展基础 class、实现一个或多个接口、使用注释等的其他框架不同,您只需将工件 class es(域 classes、服务等)在 grails-app 下的正确目录中,使用适当的 class 命名约定(域 classes 除外)和 Grails为你混合行为。您当然可以配置一些东西,例如使用 mapping 块等

在 Grails 2 之前,添加方法主要是使用 Groovy 运行时元编程完成的,而在 Grails 2 中,大部分行为是在编译时使用 AST 添加的,运行时元编程主要用于动态代码,例如 findAllByHeightAndWeightAndHairColorAndShoeSize 不切实际的地方 and/or 不可能在每个组合中编译。

超过 100 种方法被添加到域 classes(反编译一些 - 考虑到 Groovy 源代码有多小,看到有多少最终出现在您的 classes 中是非常惊人的) 和数十个被添加到控制器。但这都是混合在一起的,所以尽管你的域 classes 之间有很大的重叠,但没有共同的基础 class 或接口,除非你自己添加它们。