【发布时间】:2018-05-19 10:06:49
【问题描述】:
A.java
@Entity
@Getter
@Setter
@Inheritance
@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, inclue=JsonTypeInfo.As.PROPERTY, property="type")
@JsonSubTypes({
@JsonSubTypes.Type(value=AA.class,name="aa"),
@JsonSubTypes.Type(value=AB.class,name="ab"),
})
public abstract class A {
@Id
@GeneratedValue
private Long id;
//json ignore for getter
@ManyToOne
private A parent;
@OneToMany(mappedBy="parent")
private List<A> children;
}
AA.java
@Entity
@Getter
@Setter
@DiscriminatorValue("aa")
public class AA extends A{
private User user;
}
AB.java
@Entity
@Getter
@Setter
@DiscriminatorValue("ab")
public class AB extends A {
private String name;
}
现在,当我将 AB 类的实例作为 JSON 返回时,它看起来像这样:
{
"id": 1,
"type": "ab",
"children": [...],
"name": "ali"
}
由于我想使用自定义的User JSON,我想使用ModelMapper。除了没有type之外,一切都很好。
我的 DTO:
@Getter
@Setter
public class ADto {
private Long id;
private List<ADto> children;
}
@Getter
@Setter
public class AADto extends ADto {
private UserDto user;
}
@Getter
@Setter
public class ABDto extends ADto {
private String name;
}
如何使用ModelMapper 并获得type 的类?
【问题讨论】:
-
你确定这个例子是正确的吗?例如,
AB没有在任何地方使用,它只有一个字段,但它的 json 有 4 个字段。您能否重新格式化/简化您的问题,以便清楚您需要什么。 -
@OleksandrShpota 你是对的,
AA和AB扩展类A。
标签: java dto modelmapper