gpt4 book ai didi

java - Transformers.aliasToBean() 参数类型不匹配

转载 作者:搜寻专家 更新时间:2023-11-01 03:15:57 24 4
gpt4 key购买 nike

我有特定投影列表的 hibernate 标准:

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;
}

此条件的响应类型:
enter image description here
因此,第一个对象具有Long 类型,但在 DTO 中 contractId 具有 int 类型。我无权更改此 dto 对象。< br/>因此,当我将 ResultTransformer 添加到我的条件时:

criteria.setResultTransformer(Transformers.aliasToBean(Contract.class));

我遇到以下异常:

java.lang.IllegalArgumentException: argument type mismatch

是否可以告诉 Transformers.aliasToBean 将值从 Long 类型自动转换为 int?

最佳答案

您可以使用 addScalar 方法转换您的类型,该方法会负责将您的结果转换为预期类型。但是 afaik,它只能通过 Native Query 来完成。因此,您必须首先将投影转换为查询,然后添加标量:

yourSession
.createSQLQuery("select autoId, firstName, startDate, endDate from ...")
.addScalar("contractId") //or you can specify the type with .addScalar("contractId", Hibernate.TheTypeYouWant)

引用:https://docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html/ch13.html

关于java - Transformers.aliasToBean() 参数类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52536305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com