关于Column '*' not found 解决方案 Hibernate使用SQL查询返回实体类型,即返回某个类,或实体类
2011-04-13 12:18
676 查看
sql为select a.*, b.id as childId, b.childName from a,b where a.id = b.id
当遇到Column '*' not found找不到的时候,首先检查该字段是否存在,如果存在还有这个错误,有两种解决办法
第一种:有可能是你的*字段取了别名,那么在查询的时候一定要指定改别名的类型,为已经存在的别名指定数据类型。只需要为最外层的有别名的字段指定类型即可。代码如下:
SQLQuery query = session.createSQLQuery(sql).addScalar("别名", Hibernate.INTEGER);//指定别名的数据类型//多个别名可以连续写多个如:session.createSQLQuery(sql).addScalar("别名", Hibernate.INTEGER).addScalar("别名1",Hibernate.INTEGER);
第二种:将返回结果映射到具体的类。可以是实体类,也可以是普通的pojo类。查询代码如下:
Query query = session.createSQLQuery(sql.toString()).setResultTransformer(Transformers.aliasToBean(CheckInfo.class));//CheckInfo为pojo类
SQLQuery sqluery = session.createSQLQuery(sql).addEntity(User.class);//User为实体类,对应数据库的某个表
如果存在返回多个实体的情况:
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名称。
相关文章推荐
- 关于Column '*' not found 解决方案 Hibernate使用SQL查询返回实体类型,即返回某个类,或实体类
- sql查询报java.sql.SQLException: Column 'LC_ID' not found 的错误实际上是mysql在hibernate别名的问题
- Hibernate使用SQL查询返回实体类型
- Hibernate使用sql语句查询,返回实体类型的方法及注意事项
- Hibernate使用SQL查询返回实体类型
- Hibernate使用SQL查询返回实体类型
- 关于用Hibernate执行sql查询,字符字段类型只返回第一个字节的问题
- Hibernate查询,返回new对象(注意这个新定义的类要有构造函数),使用sql带条件分页查询并且把结果显示到一个对象的集里面的解决方案
- Hibernate查询,返回new对象(注意这个新定义的类要有构造函数),使用sql带条件分页查询并且把结果显示到一个对象的集里面的解决方案
- 关于hibernate使用SQL查询,结果集无法映射到实体类上
- 关于session过期返回主页解决方案之一以及js中的“和'使用问题
- 关于使用CursorAdapter()时出现“column '_id' does not exist”错误的说明及解决方案
- Hibernate应用SQL查询返回实体类型
- hibernate 使用sql 查询返回实体
- 关于"使用注册为 allowDefinition='MachineToApplication' 的节是错误的"的解决方案
- mysql 数据库字段为datetime类型时默认值为:0000-00-00 00:00:00 查询时异常 java.sql.SQLException:Value '0000-00-00' can not be represented as java.sq
- Hibernate中sql查询返回不受Hibernate管理的实体
- 关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)
- 解决 ”不允许在查询中显式构造实体类型“问题及使用其他方法实现返回 List<Model对象>或者IQueryable<Model对象>对象
- 关于hibernate纯sql查询返回结果集的问题(hbm.xml中不写多表关联)