为了账号安全,请及时绑定邮箱和手机立即绑定

为什么执行的时候会报如下的错误呢?

为什么执行的时候会报如下的错误呢?

月关宝盒 2023-03-19 08:04:15
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";
查看完整描述

2 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

看一下类文件pid和数据库的的数据类型一致不

我在数据库中试了一下,ifnull()函数MySQL是可以通过的,Integer是包装类类型的,楼主不妨改为int类型试试,还有,如果楼主用到了ChannelTree.hbm.xml配置文件,那么该配置文件中不要限制一个字段的长度和类型,也就是,Type和length属性不要配置,改为即可


查看完整回答
反对 回复 2023-03-21
?
开满天机

TA贡献1786条经验 获得超13个赞

六、case ... when ... then ... else .... end (等价于java中的switch语句)
case
when (条件表达式1) then 语句1
when (条件表达式2) then 语句2
else 语句N
end

查看完整回答
反对 回复 2023-03-21
  • 2 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信