关于Column '*' not found 解决方案 Hibernate使用SQL查询返回实体类型,即返回某个类,或实体类 ...

本文介绍了在SQL查询中遇到Column '* not found'错误时的两种解决方案:为别名指定数据类型和将结果映射到具体类。详细解释了如何通过代码实现,并提供了实例说明。
部署运行你感兴趣的模型镜像
  1. sql为select a.*, b.id as childId, b.childName from a,b where a.id = b.id  

 当遇到Column '*' not found找不到的时候,首先检查该字段是否存在,如果存在还有这个错误,有两种解决办法

第一种:有可能是你的*字段取了别名,那么在查询的时候一定要指定改别名的类型,为已经存在的别名指定数据类型。只需要为最外层的有别名的字段指定类型即可。代码如下:

  1. SQLQuery query = session.createSQLQuery(sql).addScalar("别名", Hibernate.INTEGER);//指定别名的数据类型//多个别名可以连续写多个如:session.createSQLQuery(sql).addScalar("别名", Hibernate.INTEGER).addScalar("别名1",Hibernate.INTEGER);  

 第二种:将返回结果映射到具体的类。可以是实体类,也可以是普通的pojo类。查询代码如下:

 

  1. Query query = session.createSQLQuery(sql.toString()).setResultTransformer(Transformers.aliasToBean(CheckInfo.class));//CheckInfo为pojo类  
  1. SQLQuery sqluery = session.createSQLQuery(sql).addEntity(User.class);//User为实体类,对应数据库的某个表  

 如果存在返回多个实体的情况:

  1. session.createSQLQuery("SELECT {user.*}, {role.*}  FROM user u, role r WHERE u.roleId= r.id")   .addEntity("user", User.class)   .addEntity("role", Role.class)    {user.*}的user就是 addEntity("user", User.class)里面的user名称。   

摘自:http://blog.youkuaiyun.com/huozhicheng/article/details/6320138

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值