[英]Dozer Deep Mapping with Annotations
Unable to map deep mapping from Source class to Target class SourceEmployee.Address.houseName
to TargetEmployee.houseName
无法将源类的深度映射映射到Target类
SourceEmployee.Address.houseName
到TargetEmployee.houseName
Source object class 源对象类
public class SourceEmployee
{
private String empName;
private Address addr;
enter code here
@Mapping("empName")
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Address getAddr() {
return addr;
}
public void setAddr(Address addr) {
this.addr = addr;
}
}
Address class 地址类
public class Address
{
private String houseName;
public String getHouseName() {
return houseName;
}
public void setHouseName(String houseName) {
this.houseName = houseName;
}
}
target object 目标对象
public class TargetEmployee
{
private String empName;
private String houseName;
public String getHouseName() {
return houseName;
}
public void setHouseName(String houseName) {
this.houseName = houseName;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
}
Main class copying from source to destination 主类从源复制到目标
public class CopyAttributes
{
public static void main(String args[])
{
SourceEmployee sourceEmp = new SourceEmployee();
sourceEmp.setEmpName("Rafi");
Address adr = new Address();
adr.setHouseName("Aashiyana");
sourceEmp.setAddr(adr);
Mapper mapper = new DozerBeanMapper();
TargetEmployee destObject = mapper.map(sourceEmp, TargetEmployee.class);
System.out.println(destObject.getEmpName());
System.out.println(destObject.getHouseName());
}
}
In case someone else run into the same problem, I manage to correct that case by doing this : 如果其他人遇到同样的问题,我设法通过这样做来纠正这种情况:
public class TargetEmployee
{
private String empName;
private String houseName;
@Mapping("addr.houseName")
public String getHouseName() {
return houseName;
}
public void setHouseName(String houseName) {
this.houseName = houseName;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
}
The 该
@Mapping("empName")
set in SourceEmployee Isn't necessary 在SourceEmployee中设置没有必要
it's enough to add this annotation in the source class (SourceEmployee): 它足以在源类中添加此注释(SourceEmployee):
@Mapping("this")
private Address addr;
In fact, "this" means "remain on the same node"; 事实上,“这个”意味着“保持在同一个节点上”; after that, houseName will match between Address and TargetEmployee.
之后,houseName将匹配Address和TargetEmployee。
;) ;)
Alex 亚历克斯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.