找到以下实体类:
@Entity
@Table(name="rooms")
public class RoomEntity {
@Column(name="mr_code", length=50, nullable=false)
private String code;
@Column(name="mr_roomtype", nullable=false, length=50)
private String type;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "mr__hotelId", nullable = false)
private HotelEntity hotel;
//getters and setters
}
@Entity
@Table(name="hotels")
public class HotelEntity{
@Column(name="mh_name", nullable=false)
private String name;
@Column(name="mh_description")
private String description;
@OneToMany(mappedBy = "hotel", fetch=FetchType.EAGER)
private Set<RoomEntity> rooms = new HashSet<>(0);
//getters and setters
}
在下面找到 DTO 类
public class RoomDTO{
private String hotelName;
private String code;
private String type;
//getters and setters
}
我编写了以下映射器代码以将数据从 RoomEntity 复制到 RoomDTO
public class BeanMapper {
private static MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
public static RoomDTO toRoomDTO(RoomEntity roomEntity) {
mapperFactory.classMap(RoomEntity.class, RoomDTO.class).field("hotel.name","hotelName").byDefault().register();
MapperFacade mapper = mapperFactory.getMapperFacade();
return mapper.map(roomEntity,RoomDTO.class);
}
}
属性 - 代码和类型值正在从 RoomEntity 复制到 RoomDTO。
但是嵌套的属性值(hotel.name -> hotelName)没有被复制。
请帮助解决此问题。