Dto:class ChannelTree {Integer id,String name,Integer pid.........}
ChannelDao 继承BaseDao:
public List<ChannelTree> generateTree() {
String sql = "select id,name,ifnull(pid,0) pid from t_channel order by orders";
List<ChannelTree> cts = this.queryBySQL(sql, ChannelTree.class, false);
return cts;
}
BaseDao中的queryBySQL方法如下:
public <N extends Object> List<N> queryBySQL(String sql, Object[] args,
Map<String, Object> alias, Class<?> clz, boolean hasEntity) {
sql=getOrderHql(sql);
SQLQuery query=getSession().createSQLQuery(sql);
setAlias(query, alias);
setArgs(query, args);
if(hasEntity){
query.addEntity(clz);
}else{
query.setResultTransformer(Transformers.aliasToBean(clz));
}
return query.list();
}
MYSQL数据库中pid有为空的记录
为什么执行的时候会报
org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of org.jy.cms.model.ChannelTree.pid
如果把sql中的ifnull函数去掉则测试通过:String sql = "select id,name,pid from t_channel order by orders";
牧羊人nacy
开满天机
相关分类