2

找到以下实体类:

@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)没有被复制。
请帮助解决此问题。

4

0 回答 0