当前位置: 首页 > 知识库问答 >
问题:

如果MapStruct中的源值为null,则抛出NPE

阳宗清
2023-03-14

默认情况下,MapStruct将NullValueMappingStrategy作为RETURN_NULL。我的要求是,当source为null时,我需要抛出一个NPE,类似于lombok的@nonnull的工作方式。

@BeforeMapping
default void checkForNullArguments(Object anySource) {
    if(anySource == null){
        throw new NullPointerException("Source is null");
    }
}
public Bar mapToBar(Foo foo) {
    this.checkForNullArguments(foo);
    if (foo == null) {
        return null;
    } else{
        ..... //Actual mapping logic
    }
}

共有1个答案

锺离穆冉
2023-03-14

目前有一个开放的特性请求支持JSR330非空注释。

目前,您将不得不忽略这些冗余的检查警告

 类似资料:
  • 问题内容: 我有以下映射 我如何配置我的Mapper或Mappings,以便当childId为null时,将目标Entity.child设置为null而不是Entity.child.id? 问题答案: 对于我来说,找到的不是一个非常优雅的解决方案,而是可行的解决方案。 首先将接口更改为抽象类,然后添加

  • 我找不到答案,我相信MapStruc不可能这样做。无论如何我想问一下,也许我错过了什么。 我有一个映射方法,它采用两个源并映射到一个目标,比方说 生成的代码执行以下检查以返回: 我希望 附注:我们使用MapStruct 1.3.1

  • 如果(tagrecord.gettagid()==null&&tagrecord.gettaglabel()==null),我实际上希望生成的方法返回一个null标记对象。有没有可能,我该如何实现这一点?

  • 问题内容: 我有一个表,其中有一个带有默认值的列: 有一个存储过程插入到: 您可以看到,我必须有条件地分支以便我的插入使用默认值(如果为null)。仅一列就可以了,但是请考虑是否有更多列-语法可能很笨拙。 我是否可以使用一种语法来指定插入值应该返回默认值(如果为null)?我尝试了以下操作,但可以理解的是语法错误: 问题答案:

  • 所以我有了这个数据表 正如您所看到的,如果值为null,则获取前一个值,但是如果您查看第三行,我将获得一个null,我假设是因为它获取了第二行的值,但是当它仍然没有更新时(因此仍然是来自原始dataframe的null)。 我有点不知道该怎么做。有人帮忙吗?

  • 我想要两个表上的连接,如果值为NULL,则复制左连接行为,如果值为NOULL,则复制内连接行为。例如,对于表: 该联接将返回一行值(根据左联接)。对于表格: 不会返回任何行(根据内部联接)。对于表格: 将返回值为的单行(根据两种联接类型)。 最有效的方法是什么? 编辑:作为效率最大化的一部分,我正在寻找一个不进行后期筛选的查询(即使用子句)。