【问题标题】:How to match an object consisting of other objects with Orika如何将由其他对象组成的对象与 Orika 匹配
【发布时间】:2021-08-25 14:21:05
【问题描述】:

我有三类实体(订单、客户、销售商)和三类 Dto。我需要使用 Orika 将对象从实体类映射到 Dto。其中一个(顺序)由数据和指向另一个 Dto 对象的链接组成。我如何使用 orika 将订单实体映射到 orderDto 使用 mapperFactory 或 orika 中的不同视线映射器。目前我有两个 mapperFactory 用于将卖家和客户转移到 Dto 也许我可以使用它们吗?

实体类

(隐藏不重要的信息)

订单

@Entity
@Table(name="Orders")
@Data
public class Orders {

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "seller_id", nullable = false)
    private Sellers seller;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "customer_id", nullable = false)
    private Customers customer;  
}

客户

    public class Customers {
        @OneToMany(fetch = FetchType.LAZY, mappedBy = "order_id")
        @JsonIgnoreProperties
        private Set<Orders> orders; 
}

卖家

public class Sellers{
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "order_id")
    private Set<Orders> orders;}

DTO

OrdersDto

public class OrdersDto
    {
        private SellersDto seller;
        private CustomersDto customer;
    }

【问题讨论】:

    标签: java spring-boot dto orika


    【解决方案1】:

    就我而言,我使用了这个解决方案:

    您需要更改您的 DTO 类。只需将继承链接从 dto 更改为 Entity。

     public class OrdersDto
        {
            private  Sellers seller // old: SellersDto seller;
            private  Customers customer;  // old: CustomersDto customer;
        }
    

    实体和 dto 类中的字段名称应按名称相同。对于数据库上的正确链接,请使用@JoinColumn 和@Column。当你使用时:

     mapperFactory.classMap(OrdersDto.class, Orders.class).byDefault().register();
    

    您的内部类(例如,我的卖家和买家)由字段自动呈现,因为它们的字段也“默认”呈现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      相关资源
      最近更新 更多