我正在构建SPRING RESTapi应用程序,因此对映射感到头疼。我有一个名为 ProductTemplate 的实体,与 Product 有 ManyToOne 关系。
模板:
public class ProductTemplate extends TableBased {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
//some other attributes
@ManyToOne(cascade = ALL, fetch = LAZY)
@JoinColumn(name = "product", nullable = false)
private Product product;
}
产品:
public class Product extends TableBased {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
//some other attributes
@OneToMany(mappedBy = "product")
private List<ProductTemplate> productTemplates;
}
字母和二传手被省略。现在,我想返回一些特定的模板以及该模板所属的产品。所以我有POJO对象 ProductTemplateResponse:
public class ProductTemplateResponse {
private Long id;
//other attributes
private Product product;
}
和产品响应:
public class ProductResponse {
private Long id;
//other attributes
}
因此,在我的应用程序中,我找到了ProductTemplate实体,然后将其映射到POJO Response(相当基础的人员),如下所示:
mapper.map(foundProductTemplate, ProductTemplateResponse.class)
这是我在应用程序中执行过的非常基本的操作,但是由于某些原因,这里的映射器失败,并带有非常笼统的声明:
Error mapping ProductTemplate to ProductTemplateResponse
但仅当我也想退回产品时。如果我从TemplateResponse中删除产品,则一切正常。而且ProductResponse也是可以的,因为我正在另一种响应中使用它,并且除此响应外,它每次都有效。您有什么主意吗?