Java 如何将DTO的ID映射到实体上类的ID

Java 如何将DTO的ID映射到实体上类的ID,java,modelmapper,Java,Modelmapper,我正在尝试从ProductReviewTo映射,该ProductReviewTo具有要链接到ProductReview实体上找到的产品的int product ID。但是,使用ModelMapper,它似乎无法正确映射。导致设置值失败错误消息以及IllegalArgument异常,表示在尝试设置值时该对象不是声明类的实例 ProductReview到ProductReviewTo的第一个映射工作正常 DTO: 实体: @Data @Entity @Builder @NoArgsConstruct

我正在尝试从ProductReviewTo映射,该ProductReviewTo具有要链接到ProductReview实体上找到的产品的int product ID。但是,使用ModelMapper,它似乎无法正确映射。导致设置值失败错误消息以及IllegalArgument异常,表示在尝试设置值时该对象不是声明类的实例

ProductReview到ProductReviewTo的第一个映射工作正常

DTO:

实体:

@Data
@Entity
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "product_reviews")
public class ProductReview {

    @Id
    @SequenceGenerator(name="product_reviews_generator", sequenceName = "product_reviews_id_seq", allocationSize = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "product_reviews_generator")
    @Column(name = "id", updatable = false, nullable = false)
    private int id;

    @ManyToOne(cascade=CascadeType.DETACH, fetch = FetchType.LAZY)
    @JoinColumn(name = "product_id", nullable=false)
    private Product product;
}
映射:

@NoArgsConstructor
public class ProductReviewMapping implements BaseMapping<ProductReview, ProductReviewDTO> {

    @Override
    public PropertyMap<ProductReview, ProductReviewDTO> MapFromSourceToTarget() {
        return new PropertyMap<ProductReview, ProductReviewDTO>() {
            protected void configure() {
                map().setProductId(source.getProduct().getId());
                map().setUserId(source.getUser().getId());
                map().setRatingId(source.getRating().getId());
            }
        };
    }

    @Override
    public PropertyMap<ProductReviewDTO, ProductReview> MapFromTargetToSource() {
        return new PropertyMap<ProductReviewDTO, ProductReview>() {
            protected void configure() {
                map().setProduct(new Product().builder().id(source.getProductId()).build());
            }
        };
    }
}

@NoArgsConstructor
public class ProductReviewMapping implements BaseMapping<ProductReview, ProductReviewDTO> {

    @Override
    public PropertyMap<ProductReview, ProductReviewDTO> MapFromSourceToTarget() {
        return new PropertyMap<ProductReview, ProductReviewDTO>() {
            protected void configure() {
                map().setProductId(source.getProduct().getId());
                map().setUserId(source.getUser().getId());
                map().setRatingId(source.getRating().getId());
            }
        };
    }

    @Override
    public PropertyMap<ProductReviewDTO, ProductReview> MapFromTargetToSource() {
        return new PropertyMap<ProductReviewDTO, ProductReview>() {
            protected void configure() {
                map().setProduct(new Product().builder().id(source.getProductId()).build());
            }
        };
    }
}

Caused by: org.modelmapper.MappingException: ModelMapper mapping errors:

1) Failed to set value '1' on com.pfex.ecom.library.common.entity.Product$ProductBuilder.id()