Mar*_*vin 2 java sql-server hibernate
我已经有这样的错误,当你尝试执行不合适的匹配(日期到布尔,等等),我已经能够很容易地修复.
但是这一次,我很困惑,因为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;
}
}
Run Code Online (Sandbox Code Playgroud)
我的hibernate查询:
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>
Run Code Online (Sandbox Code Playgroud)
错误:
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]
Run Code Online (Sandbox Code Playgroud)
我真的对此感到困惑,因此欢迎任何帮助.
感谢您的阅读,直到那里.
只需添加预期类型,例如:
.addScalar("id", new LongType())
.addScalar("name", new StringType())
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2690 次 |
最近记录: |