我试图将每个列表都位于嵌套对象内的webservice模型映射到更简单的对象。
public class Parent {
private Children children;
}
public class Children {
private List<Child> children;
}
public class Child {
}
public class Parent2 {
private List<Child2> children;
}
public class Child {
}
映射非常简单:
@Mappings({@Mapping(source = "entity.children.children", target = "children")})
Parent2 parentToParent2(Parent entity);
@InheritInverseConfiguration
Parent parent2ToParent(Parent2 entity);
映射工作正常,除了一个问题。当我将带有null子级的父母映射到父母2并返回父母时,儿童对象是用空列表创建的。有什么方法可以防止这种情况吗?
您可以使用映射器装饰器或AfterMapping钩子来实现这一点。
装饰:
public abstract class MapperDecorator implements Mapper {
private final Mapper delegate;
public MapperDecorator(Mapper delegate) {
this.delegate = delegate;
}
@Override
public Parent parent2ToParent(Parent2 entity) {
Parent parent = delegate.parent2ToParent(entity);
if (entity.getChildren() == null) {
parent.setChildren(null);
}
return parent;
}
}
映射器:
@org.mapstruct.Mapper
@DecoratedWith(MapperDecorator.class)
public interface Mapper {
@Mapping(source = "entity.children.children", target = "children")
Parent2 parentToParent2(Parent entity);
@InheritInverseConfiguration
Parent parent2ToParent(Parent2 entity);
Child2 childToChild2(Child entity);
Child child2ToChild(Child2 entity);
}
映射器:
@org.mapstruct.Mapper
public abstract class Mapper {
@Mapping(source = "entity.children.children", target = "children")
public abstract Parent2 parentToParent2(Parent entity);
@InheritInverseConfiguration
public abstract Parent parent2ToParent(Parent2 entity);
public abstract Child2 childToChild2(Child entity);
public abstract Child child2ToChild(Child2 entity);
@AfterMapping
public void afterParent2ToParent(Parent2 source,
@MappingTarget Parent target) {
if (source.getChildren() == null) {
target.setChildren(null);
}
}
}
问题内容: 传递0作为限制参数可以防止尾随空字符串,但是如何防止 前导 空字符串呢? 例如 结果是带有“”,“ Test”,“ Stuff”的数组。 是的,我知道我可以滚动自己的令牌生成器…但是StringTokenizer的API文档说 “ StringTokenizer是一个遗留类,出于兼容性原因保留,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人都使用拆分” 问题答案: 您最好的选择可能
问题内容: 我正在编写一个在Linux上运行的Java应用程序(使用Sun的JDK)。它一直在创建目录,我想防止这样做。有什么方法可以阻止Java创建这些文件? 问题答案: 尝试JVM选项 -XX:-UsePerfData 更多信息 来自链接https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html的以下内容可能会有所帮
我已经在继承代码上工作了几天了,我正试图了解maven是如何工作的,以及为什么要按原样配置项目。该项目使用Jetty作为http服务器,并提供Angular应用程序,此外还使用Jersey为Angular应用程序提供RESTfulendpoint。项目目录为: 作为部署过程的一部分,我被告知设置maven,以便将项目打包为. war。为此,我有以下内容: 当我运行mvn安装时,在我的src/mai
我查阅了关于单元素元组的文档,对它如何防止空间泄漏有点困惑,这让我怀疑我对Haskell内存模型和/或垃圾收集器的工作原理一无所知。 引用文件,他们说: Solo最重要的特性是可以强制其“外部”(通常通过模式匹配)而不强制其“内部”,因为它被定义为数据类型而不是新类型。在编写函数以从数据结构中提取值时,这可能很有用。假设您编写了数组的一个实现,并且只提供此函数来索引数组: 这实际上会导致空间泄漏。
我正在使用org.AsynchTtpClient发布异步请求。 在关闭tomcat时,我得到了以下日志: 严重:web应用程序[/test]似乎启动了一个名为[pool-1-thread-1]的线程,但未能停止它。这很有可能造成内存泄漏。 2017年7月4日10:53:00 AM org.apache.catalina.loader.webappclassloaderbase clearRefer
我有一个Spring批处理应用程序,可以从外部源读取数据。但当作业运行时,它会尝试在源数据库的Batch_Job_实例表中创建和插入数据,但用户没有任何权限。如何防止在源数据库中创建这些表? 有人能帮忙吗? 下面是错误日志 16:46:00,491ERROR[org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler](