Как исправить карту разных классов с одним и тем же родителем
пружина DTO Джексон объекты
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type",
)
@JsonSubTypes(value = {
@JsonSubTypes.Type(value = B.class, name = "TypeB"),
@JsonSubTypes.Type(value = C.class, name = "TypeC")
})
abstract class A {
Type type;
String id;
}
class B extends A {
String name;
}
class C extends A {
String description;
}
Класс сущности содержит все поля
class myEntity {
Type type;
String id;
String name;
String description;
}
MapStruct mapper
public abstract class IntegrationMapper {
public A toDto(MyEntity myEntity);
public MyEntity fromDto(A integrationDTO)
}
Как я могу создавать различные экземпляры B или C в toDto зависит от type значение?
Я использую что-то вроде этого
public abstract class IntegrationMapper {
public A toDto(MyEntity myEntity) {
if(myEntity.type == TypeB) {
return toB(myEntity);
} else if (myEntity.type == TypeC) {
return toC(myEntity);
}
}
public MyEntity fromDto(A a) {
if(a instanceOf B) {
return fromDto((B) a);
} else if (a instanceOf C) {
return fromDto((C) a);
}
}
protected B toB(MyEntity myEntity);
protected C toC(MyEntity myEntity);
protected MyEntity fromDto(B c);
protected MyEntity fromDto(C c);
}
Но я подозреваю, что это можно сделать лучше с помощью ObjectFactory или чего-то подобного
, чтобы избежать длинных , еслиоператор и создание нового метода для каждого нового потомка A