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

使用mapstruct克隆没有id的对象

袁永贞
2023-03-14

我有一个对象,其中包含几个列表。有没有一种方法来克隆这个对象,没有id使用mapstruct,即使是嵌套的对象列表,以自动的方式能够持久化它。

@Data
public class ParentDto {
  @Id
  private Long id;
  private String name;
  private List<Child1Dto> children1;
  private List<Child1Dto> children2;
}

@Data
public class Child1Dto {
  @Id
  private Long id;
  private String name;
}

@Data
public class Child2Dto {
  @Id
  private Long id;
  private String name;
}

实际制图员

@Mapper(mappingControl = DeepClone.class)
public interface CloneParentMapper {
  @Mapping(target = "id", ignore = true)
  ParentDto cloneWithoutId(ParentDto parentDto );

  @Mapping(target = "id", ignore = true)
  Child1Dto cloneWithoutId(Child1Dto child1Dto );

  @Mapping(target = "id", ignore = true)
  Child2Dto cloneWithoutId(Child2Dto child2Dto );
}

有没有一种方法可以忽略所有id,而不必对每个列表进行@Mapping(target=“id”,ignore=true)?

共有1个答案

卫琛
2023-03-14

我真的觉得这是最好最简单的忽略字段的方法。

但是,如果你想忽略字段,而不是特别地将它们标记为忽略,那么你可以使用基于构造函数的映射,并有一个没有id字段的单独构造函数。您必须将此构造函数标记为@Default

https://mapstruct.org/documentation/stable/reference/html/#mapping-与建设者

 类似资料:
  • 问题内容: 很久很久以前有一堂课: 在对象中,我们有: 而Cloneable接口是: 我应该如何克隆呢? 问题答案: 我认为当前的绿色答案不好 ,为什么您会问? 它添加了很多代码 它要求您列出所有要复制的字段并执行此操作 当使用clone()时,这对列表不起作用(这是HashMap的clone()所说的:返回此HashMap实例的浅表副本:键和值本身不会被克隆。)因此您最终需要手动进行操作(这使得

  • 假设我有这门课: 以及子类: 我知道这是不可能的,但我想你明白我想要什么。如果Foobar实现了Cloneable,并且没有扩展AbstractFoo,那么子类就可以工作。我想我想要但不允许的是: 如果Foobar实现了Cloneable,并且没有扩展AbstractFoo,那么子类就可以工作。 除了扩展的抽象类,我怎么能做到“相同”?

  • 因此,我的问题是:为什么还没有被否决?如果核心Java团队已经决定它是坏的,那么他们一定也考虑过弃用。他们反对这样做的理由是什么(在Java8中,它仍然没有被反对)?

  • 我已经复制了这个代码,似乎是各种工作dockerfile周围,这里是我的: 这给了我错误 这是我第一次使用dockerfile,但是从我所读到的(以及从工作配置中获取的),我不明白为什么这不起作用。 我的id_rsa和我的dockerfile在同一个文件夹中,是我的本地密钥的副本,可以克隆这个回购没有问题。 编辑: 在我的dockerfile中,我可以添加: 它打印出正确的密钥,所以我知道它被正确

  • 问题内容: 在node.js中克隆对象的最佳方法是什么 例如,我想避免以下情况: 该对象很可能包含复杂的类型作为属性,因此简单的for(var1 in obj1)无法解决。我需要自己编写一个递归克隆吗,还是内置了一些我看不到的东西? 问题答案: 可能性1 简洁的深层副本: 可能性2(已弃用) 注意: 现在,Node.js文档中将该解决方案标记为不推荐使用: 从未打算在内部Node.js模块之外使用

  • 问题内容: 如果克隆数组,我将使用 我想知道如何在nodejs中克隆对象。 问题答案: 对于不需要压缩每一滴性能的实用程序和类,我经常作弊,只是使用JSON执行深层复制: 这不是唯一的答案,也不是最优雅的答案。所有其他答案都应考虑成为生产瓶颈。但是,这是一个快速而肮脏的解决方案,非常有效,并且在大多数情况下(我会克隆属性的简单哈希值)很有用。