虽然查询是从db控制台运行的,但Hibernate会抛出异常

时间:2011-05-15 21:04:25

标签: java sql hibernate orm

我执行起来相当复杂:

session.createSQLQuery("query").setResultTransformer(Transformers.aliasToBean(CheckIn.class));

我在我的查询中使用了几个AS(例如,从我的表中选择列as columnName),而hibernate总是抛出此异常:

Exception in thread "main" org.hibernate.PropertyNotFoundException: Could not find setter for inputrecords on class com.letmedical.store.CheckIn
    at org.hibernate.property.ChainedPropertyAccessor.getSetter(ChainedPropertyAccessor.java:44)
    at org.hibernate.transform.AliasToBeanResultTransformer.transformTuple(AliasToBeanResultTransformer.java:57)
    at org.hibernate.hql.HolderInstantiator.instantiate(HolderInstantiator.java:69)
    at org.hibernate.loader.custom.CustomLoader.getResultList(CustomLoader.java:330)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
    at org.hibernate.loader.Loader.list(Loader.java:2099)
    at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289)
    at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695)
    at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142)
    at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:152)
    at com.letmedical.store.Test.main(Test.java:37)

但是每个类字段都有setter。我该怎么办?谷歌没有多大帮助,因为这不是严格的休眠错误。

更新:

我试图通过结果列表进行迭代:

List<CheckIn> list = query.list();  


for (CheckIn object : list) {
                System.out.println(object.getAppTime());
            }

我收到此错误:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.letmedical.store.CheckIn
    at com.letmedical.store.Test.main(Test.java:41)

但是我的对象的所有属性都在这个对象中,但是我无法将其强制转换为我的对象CheckIn。有人有这个问题吗?

更新II:

这是getter / setter:

private Integer inputRecords;

public Integer getInputRecords() {
    return inputRecords;
}
public void setInputRecords(Integer inputRecords) {
    this.inputRecords= inputRecords;
}

我的Hibernate映射:

  <property name="inputRecords" type="java.lang.Integer">
            <column name="inputRecords" not-null="false" />
        </property>

表格列名为inputrecords

还有办法吗?

1 个答案:

答案 0 :(得分:1)

从你的堆栈跟踪

,你有一个字段'inputrecords'。这应该是

inputRecords

并且setter应该是

public void setInputRecords(...){
...
}