【发布时间】:2022-07-14 15:30:31
【问题描述】:
ModelMapper 在将我的实体转换为 DTO 方面一直表现出色,但我无法反过来,因为我的大多数实体至少有一个字段是另一个实体本身。
组:
@Entity
@Table(name = "GROUPS_")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Group {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@Column(name = "NAME", nullable = false)
private String name;
@ManyToOne
@JoinColumn(name = "AREA_ID", nullable = false)
private Area area;
}
地区:
@Entity
@Table(name = "AREAS")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Area {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@Column(name = "NAME", nullable = false)
private String name;
}
GroupDTO:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GroupRequestDTO {
private String name;
private Long areaId;
}
我想做什么:
private Group mapToEntity (GroupRequestDTO groupRequestDTO){
return modelMapper.map(Group.class,groupRequestDTO);
}
我期望的行为(也是我当前的实现)
private Group mapToEntity (GroupREquestDTO groupRequestDTO){
return new Group(
null,
groupRequestDTO.getName(),
entityManager.getReference(Area.class, groupRequestDTO.getAreaId())
)
}
知道我的 RequestDTO 将始终具有名称为 [entitiy]Id 的引用实体 id 并且所有实体的 id 都称为“id”可能会很有用
额外的问题,有没有办法为我的其他实体概括这一点?我可以为每个实体设置自定义映射(没有那么多),但如果 modelMapper 知道将“fooId”转换为 Foo 实体/引用,那就太好了
【问题讨论】:
标签: java spring jpa spring-data-jpa modelmapper