【发布时间】:2018-09-27 11:48:04
【问题描述】:
我有特定投影列表的休眠标准:
criteria.setProjection(Projections.projectionList()
.add(Projections.property("contract.autoId"), "contractId")
.add(Projections.property("customer.firstName"), "firstName")
.add(Projections.property("contract.startDate"), "startDate")
.add(Projections.property("contract.endDate"), "endDate"));
我想将此条件的响应映射到以下 DTO 对象:
public class Contract {
private int contractId;
private String description;
private Date startDate;
private Date endDate;
}
此标准的响应类型:
因此,第一个对象具有 Long 类型,但在 DTO contractId 中具有 int 类型。我无权更改此 dto 对象。
因此,当我将 ResultTransformer 添加到我的标准时:
criteria.setResultTransformer(Transformers.aliasToBean(Contract.class));
我遇到了以下异常:
java.lang.IllegalArgumentException: argument type mismatch
是否可以告诉Transformers.aliasToBean 自动将值从 Long 类型转换为 int 类型?
【问题讨论】:
-
你使用的是哪个版本的休眠?
-
@Leviand,我使用的是 4.2.6
-
您可以提供您的自定义 Transformer