JPA hibernate 查询结果转化成对象

@Override
public QueryResult<CustomerWatchItem> getCustomerScrollData(int firstResult, int maxresult, String wherejpql, Object[] queryParams, LinkedHashMap<String, String> orderby) {
    QueryResult qr = new QueryResult();
    String sql="SELECT o.watchTimeStr,o.watchTime,o.statue,o.name,o.number,db.fx10mins,db.fs10mins,db1.benzhanqiya,db2.qiwen,db2.ludianwendu,db2.xiangduishidu,db3.tenmins,db4.xiaoshijiangyuliang FROM db_m_watchitem o LEFT JOIN db_m_watchitem_wind db ON o.id = db.data_id LEFT JOIN db_m_watchitem_pressure db1 ON o.id = db1.data_id LEFT JOIN db_m_watchitem_temhum db2 ON o.id=db2.data_id LEFT JOIN db_m_watchitem_visible db3 ON o.id=db3.data_id LEFT JOIN db_m_watchitem_dre db4 ON o.id=db4.data_id ";
    Query query = this.em.createNativeQuery(sql + (wherejpql != null && !"".equals(wherejpql.trim())?"where " + wherejpql:"") + buildOrderby(orderby));
    setQueryParams(query, queryParams);
    query.unwrap(SQLQuery.class).setResultTransformer(Transformers.aliasToBean( CustomerWatchItem.class));
    if(firstResult != -1 && maxresult != -1) {
        query.setFirstResult(firstResult).setMaxResults(maxresult);
    }

    qr.setResultlist(query.getResultList());
    query = this.em.createQuery("select count("+getCountField(this.entityClass)+") from " + getEntityName(this.entityClass) + " o " + (wherejpql != null && !"".equals(wherejpql.trim())?"where " + wherejpql:""));
    setQueryParams(query, queryParams);
    qr.setTotalrecord(((Long)query.getSingleResult()).longValue());
    return qr;
}

注意的是,必须对查询出来的结果提供getset方法,否则异常