我有两个目标 Set<Foo> fooSet
以及 Set<Bar> barSet
. Foo
是实体对象 Bar
是我要用于将数据发送到ui的dto。我想复制 fooSet
进入 barSet
.
public class Foo {
@Id
@Column(name = "Category_Id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long categoryId;
@OneToMany(mappedBy="productCategory")
private Set<ProductEntity> products;
}
public class BarDto {
private Long categoryId;
private Set<ProductDto> products;
}
我正在尝试将实体转换为dto对象,如:
public BarDto mapDomainToDto(Foo domain) {
BarDto barDto= new BarDto();
barDto.setCategoryId(domain.getCategoryId());
//trying to do something like:
barDto.setProducts(domain.getProducts());
}
在Java8中有什么方法可以实现这一点吗?
2条答案
按热度按时间jtjikinw1#
我们通常写模型Map器。或者你可以使用一些像http://modelmapper.org/getting-started/
pw9qyyiw2#
java 8本身不提供这种Map特性,对于纯java来说,剩下的就是手动调用getter和setter,就像您已经做的那样:
只要这类对象Map和参数的数量较少,这本身就不错。对于更复杂的对象层次结构,我建议使用mapstruct。modelmapper是它的替代品(imho,mapstruct是一种更易于配置和使用的方法,尽管它做同样的工作)。
回到Java8,我敢打赌您提到的是流api、可选的或与函数范式相关的任何东西。同样,在这个版本或任何更新版本的java中都没有这样的特性。但是,它可以帮助您使用上面的库Map对象集合: