Grails 5:如何判断域类属性在映射中是否配置了Formula?
判断Grails域对象属性是否配置了Formula映射
直接判断单个属性是否配置Formula
可以通过Grails提供的公开域类元数据API来获取属性的映射配置,无需依赖私有方法。核心思路是获取域类的GrailsDomainClass实例,然后提取指定属性的映射信息,检查是否存在formula配置:
import grails.core.GrailsDomainClass import grails.core.GrailsDomainClassProperty def hasFormula(Class domainClass, String propertyName) { GrailsDomainClass domainMeta = grailsApplication.getDomainClass(domainClass.name) GrailsDomainClassProperty prop = domainMeta.getPropertyByName(propertyName) if (!prop) { return false } def propMapping = domainMeta.mapping.getPropertyMapping(propertyName) return propMapping?.formula != null }
调用示例:hasFormula(Book, "averageRating"),返回布尔值表示该属性是否配置了Formula。
遍历所有配置了Formula的属性
如果需要遍历域类中所有带有Formula配置的属性,可以遍历域类的propertyMappings集合:
import grails.core.GrailsDomainClass def getPropertiesWithFormula(Class domainClass) { GrailsDomainClass domainMeta = grailsApplication.getDomainClass(domainClass.name) def result = [] domainMeta.mapping.propertyMappings.each { propName, mapping -> if (mapping.formula) { result << propName } } return result }
调用后会返回一个包含所有配置了Formula的属性名列表。
说明
上述代码中使用的grailsApplication是Grails应用上下文的核心bean,可在服务类、控制器或脚本中直接注入使用。这些API均为Grails框架公开的核心接口,不存在私有API的兼容性风险。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

