我有一个大约有20个属性的域类。域类上的findBy会产生一个选择查询,该查询具有从数据库中选择的所有列,当所需的列可能仅为1时,这可能会降低性能。
所以我想到了withCriteria。
def sampleDomainInst = SampleDomain.withCriteria{
projections {
property('fieldOne')
}
eq('id', idVal)
}
返回的值是一个列表。但是我需要的是
SampleDomain
的实例,我该怎么做?谢谢。
问候,
杰伊·钱德兰
最佳答案
投影的目标是恕我直言,不要让域实例返回。从理论上讲,您可以在投影封闭中添加“id”,然后可以执行DomainClass.get(id)。但这与完全没有预期的情况相同。
如果您的域类具有如此多的属性,而您正使用投影来仅获取它们的一部分,则应考虑将域类拆分为多个联接的类。良好的设计实践是,每个类仅应代表一个抽象。
关于grails - Grails:使用投影时如何返回域类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4449718/