如何将由其他对象组成的对象与 Orika 匹配
How to match an object consisting of other objects with Orika
我有三个 类 的实体 (order,customer,sallers) 和三个 类 的 Dto。我需要使用 Orika 将对象从实体 类 映射到 Dto。其中一个(订单)由数据和指向另一个 Dto 对象的链接组成。我如何使用 orika 将订单实体映射到 orderDto 在 orika 中使用 mapperFactory 或不同的视线映射器。目前我有两个 mapperFactory 用于将 Sellers 和 Customers 转移到 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;
}
在我的例子中,我使用了这个解决方案:
您需要更改 DTO class。只需将继承链接从 dto 更改为 Entity。
public class OrdersDto
{
private Sellers seller // old: SellersDto seller;
private Customers customer; // old: CustomersDto customer;
}
您实体中的字段名称和 dto class 的名称应该相等。对于数据库上的正确链接,请使用@JoinColumn 和@Column。当你使用:
mapperFactory.classMap(OrdersDto.class, Orders.class).byDefault().register();
您的内部 classes(例如,对我而言,Sellers 和 Buyers)由字段自动呈现,因为它们的字段也“默认”呈现。
我有三个 类 的实体 (order,customer,sallers) 和三个 类 的 Dto。我需要使用 Orika 将对象从实体 类 映射到 Dto。其中一个(订单)由数据和指向另一个 Dto 对象的链接组成。我如何使用 orika 将订单实体映射到 orderDto 在 orika 中使用 mapperFactory 或不同的视线映射器。目前我有两个 mapperFactory 用于将 Sellers 和 Customers 转移到 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;
}
在我的例子中,我使用了这个解决方案:
您需要更改 DTO class。只需将继承链接从 dto 更改为 Entity。
public class OrdersDto
{
private Sellers seller // old: SellersDto seller;
private Customers customer; // old: CustomersDto customer;
}
您实体中的字段名称和 dto class 的名称应该相等。对于数据库上的正确链接,请使用@JoinColumn 和@Column。当你使用:
mapperFactory.classMap(OrdersDto.class, Orders.class).byDefault().register();
您的内部 classes(例如,对我而言,Sellers 和 Buyers)由字段自动呈现,因为它们的字段也“默认”呈现。