Я использую dozer для отображения между компонентом и моделью с подходом аннотации. Все работает хорошо с большинством классов.
Но недавно я столкнулся с 1 проблемой, когда у моего компонента был защищенный конструктор с 1 параметром. Поскольку этот конструктор используется в некоторых местах с ключевым словом super
.
Ниже приведен пример примера:
TestBean. java:
abstract public class TestBean{
public enum Type {
ALL, FIELD, QUERY, HIERARCHY
}
public enum Sort {
COUNT, INDEX, VALUE
}
private Type type;
private String description;
private Sort sort;
public FacetBean() {
}
protected FacetBean(FacetBean from) {
setId(from.getId());
description = from.description;
sort = from.sort;
}
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Sort getSort() {
return sort;
}
public void setSort(Sort sort) {
this.sort = sort;
}
}
Ниже приведен пример кода для моей модели.
TestModel. java
public class TestModel{
public enum Type {
ALL, FIELD, QUERY, HIERARCHY
}
public enum Sort {
COUNT, INDEX, VALUE
}
private Type type;
private String description;
private Sort sort;
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Sort getSort() {
return sort;
}
public void setSort(Sort sort) {
this.sort = sort;
}
}
Я использую org.dozer.mapper
для сопоставления между моделью и компонентом .
Ниже приведен рабочий код:
mapper.map(testBean, TestModel.class)
-> РАБОТАЮЩИЙ
Если я попробую наоборот, то это даст мне mapper.map(testModel, TestBean.class)
-> НЕ РАБОТАЕТ
org.dozer.MappingException: java .lang.InstantiationException
Любая идея, как решить эту проблему? (Я не могу изменить TestBean. java, поскольку он очень старый и используется во многих местах, я недавно создал TestModel. java для сопоставления данных TestBean. java и возвращаем как ответ API)
Спасибо!