【发布时间】:2023-03-04 01:45:01
【问题描述】:
当您尝试执行不适当的匹配(日期到布尔值等)时,我已经遇到了这样的错误,我可以很容易地修复它。
但这一次,我很困惑,因为hibernate拒绝将“数字”Id与Java“Long”匹配(当为Double,Integer,Float,String,int,long创建setter时,它也失败了,等等)
sql-server 字段“id”是一个NUMERIC(19,0)
我的 DTO 是:
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class DtoResult {
private Long id;
private String name;
// ...
public Long getId() {
return id;
}
public void setId(final Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
}
我的休眠查询:
final SQLQuery query= getCurrentSession().createSQLQuery(select + from + where);
query.setParameter("manyFields", manyFields);
query
.addScalar("id")
.addScalar("name")
.setResultTransformer(Transformers.aliasToBean(DtoResult.class));
return query.list(); // List<DtoResult>
错误:
IllegalArgumentException occurred while calling setter for property [com.some.thing.DtoResult.id (expected type = java.lang.Long)]; target = [com.some.thing.DtoResult@77a70b79], property value = [269895]
我对此感到非常困惑,因此欢迎任何帮助。
感谢您一直阅读。
【问题讨论】:
标签: java sql-server hibernate