java - 如何在 Grails 4.x 上配置域编组器
问题描述
我正在尝试修复从 Grails 3.x Domain Marshaller 到 Grails 4.x 的升级,请参阅下面我正在使用的代码
import org.grails.datastore.mapping.model.PersistentEntity
class DomainClassMarshaller {
public static final List<String> appendFields = ['id']
static Closure appendMarshaller(String clazz, List<String> fieldsToInclude) {
def grailsDomainClassMappingContext
return { domainItem ->
def domain = grailsDomainClassMappingContext.getPersistentEntity(clazz)
def results = [:]
domain.persistentProperties.each { field ->
results[field.name] = domainItem[field.name]
}
def fields = []
fields.addAll(appendFields)
fields.addAll(fieldsToInclude)
//println "size:" +fields.size();
fields.each { name ->
results[name] = domainItem[name]
//println "name :"+name+" value:"+domainItem[name];
}
return results
}
}
static Closure limitIncludes(Class clazz, List<String> fieldsToInclude) {
def grailsDomainClassMappingContext
return { domainItem ->
def domain = grailsDomainClassMappingContext.getPersistentEntity(clazz)
def results = [:]
def fields = []
fields.addAll(appendFields)
fields.addAll(fieldsToInclude)
fields.each { name ->
results[name] = domainItem[name]
}
return results
}
}
static Closure excludes(Class clazz, List<String> fieldsToExclude = []) {
def grailsDomainClassMappingContext
return { domainItem ->
def domain = grailsDomainClassMappingContext.getPersistentEntity(clazz)
def results = [:]
domain.persistentProperties.each { field ->
if (!(field.name in fieldsToExclude))
results[field.name] = domainItem[field.name]
}
appendFields.each { name ->
results[name] = domainItem[name]
}
return results
}
}
}
出于某种原因不喜欢这种新方法,我一直得到一个
Caused by: java.lang.NullPointerException: Cannot invoke method getPersistentEntity() on null object
不知道大家有什么建议,不胜感激
解决方案
推荐阅读
- laravel - 在流明 laravel 中使用条带连接,安装问题
- ios - 什么是与应用内购买一起提交但我未能包含导致它被拒绝的二进制文件?
- javascript - 在输入字段中按任何关键字时启动自动完成
- javascript - 如何使用 Material-UI 和 react-router 为 React 应用程序提供服务
- python - 在 python 中读取 PASCAL VOC 注释
- nativescript - 让 OpenGL 在 Nativescript Angular 应用程序中运行
- reactjs - 测试工具中的笑话
- elasticsearch - {"error":"Content-Type header [] is not supported","status":406} 使用 Golang 向 Elasticsearch 插入数据时
- c# - AspnetCore 2.1 自定义授权过滤器问题
- mysql - MYSQL GROUP BY 子句添加非 GROUP BY 列