Tôi cần ánh xạ lớp A vào lớp C bằng khung dozer.Dozer ánh xạ các lớp bên trong
public class A {
private String fielda1;
private String fielda2;
public String getFielda1() {
return fielda1;
}
public void setFielda1(String fielda1) {
this.fielda1 = fielda1;
}
public String getFielda2() {
return fielda2;
}
public void setFielda2(String fielda2) {
this.fielda2 = fielda2;
}
}
public class B {
private List<C> cList;
public List<C> getcList() {
return cList;
}
public void setcList(List<C> cList) {
this.cList = cList;
}
public static class C {
private String fieldc1;
private String fieldc2;
public String getFieldc1() {
return fieldc1;
}
public void setFieldc1(String fieldc1) {
this.fieldc1 = fieldc1;
}
public String getFieldc2() {
return fieldc2;
}
public void setFieldc2(String fieldc2) {
this.fieldc2 = fieldc2;
}
}
}
XML tập tin bản đồ:
<mapping wildcard="false" map-null="false" map-id="test">
<class-a>test.A</class-a>
<class-b>test.B.C</class-b>
<field>
<a>fielda1</a>
<b>fieldc1</b>
</field>
<field>
<a>fielda1</a>
<b>fieldc2</b>
</field>
</mapping>
Khi tôi cố gắng để ánh xạ các lớp này tôi đã theo ngoại lệ:
org.dozer.MappingException: java.lang.ClassNotFoundException: test.B.C
at org.dozer.util.MappingUtils.throwMappingException(MappingUtils.java:88)
at org.dozer.util.DefaultClassLoader.loadClass(DefaultClassLoader.java:33)
Nó vỉa rằng dozer là không có khả năng để xử lý tình trạng này và cách sử dụng lớp B là tên gói. Vấn đề này có thể được giải quyết bằng cách sử dụng bộ chuyển đổi tùy chỉnh. Tôi chỉ muốn biết là có bất kỳ thủ thuật nào có thể được sử dụng để chuyển đổi các lớp này chỉ bằng cách sử dụng cấu hình XML không?
trong StackOverflow thông lệ là câu trả lời giúp bạn nhiều nhất. Ngoài ra nó cũng là phong tục để chấp nhận câu trả lời mà toàn diện hơn giúp giải quyết vấn đề của bạn. Bạn upvote một câu trả lời bằng cách sử dụng mũi tên phía trên bên trái của câu trả lời (số phiếu bầu sẽ tăng 1). Bạn chấp nhận câu trả lời bằng cách nhấp vào dấu kiểm bên dưới câu trả lời để nó chuyển sang màu xanh lục. –