** 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;
}
现在,当我以JSON形式返回类**AB
**的示例时,它看起来像这样:
{
"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
?
3条答案
按热度按时间fafcakar1#
可能的解决办法:
1.你试过在父类中添加属性类型吗?如果你从数据库中检索这个字段,这就足够了。
1.一个简单的测试技巧,添加
protected String type = this.getClass().getSimpleName().toLowerCase();
。注意它必须是 * protected * 的。下面是我的测试代码:ymdaylpp2#
定义父类时可以使用InheritanceType,这将有助于显示类的子类型
例如:A.java
yyyllmsg3#
现在有类型Map来解决这个问题。请参阅type-map-inheritence文档。