`

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

阅读更多
  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.csdn.net/huozhicheng/article/details/6320138

分享到:
评论

相关推荐

    hibernate@注解方式配置实体类,调用javadoc接口生成数据库表及字段的注释说明

    hibernate@注解方式配置实体类时,利用javadoc接口生成数据库表及字段的注释说明,支持oracle、sqlserver、db2、mysql数据库。因用到java\lib\tools.jar,需要将该jar放入工程lib下(或者tomcat\lib下、或加入...

    Java实体类字段生成工具类-将数据库表列字段转为Java实体类驼峰字段

    为了解决这个问题,开发了这个Java实体类字段生成工具类。 2、该工具类可以将数据库表列字段转化为对应的Java实体类字段。生成的实体类字段格式清晰易读,且符合Java命名规范。通过使用该工具类,可以大大提高开发...

    hibernate常见错误解决方案

    hibernate常见错误解决方案

    hibernate常见异常针对于jpa

    hibernate常见异常,hibernatejpa注解使用开发的解决方案

    Hibernate自动生成数据库表映射实体类

    throw new Exception("Unknown type " + columnType + " and column is " + columnName); } strInJava += " private " + typeInJava + " " + nameFirstLetterLower + ";\n"; // strInHibernate += ...

    Hibernate注释大全收藏

    Hibernate 使用 SQL Union 查询来实现这种策略。 这种策略支持双向的一对多关联,但不支持 IDENTIFY 生成器策略,因为ID必须在多个表间共享。一旦使用就不能使用AUTO和IDENTIFY生成器。 每个类层次结构一张表 @...

    Hibernate+中文文档

    10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化...

    Hibernate实体对象继承的三种方法

    主要介绍了Hibernate实体对象继承的方法的相关资料,需要的朋友可以参考下

    Hibernate注解

    * @Entity —— 将一个类声明为一个实体bean(即一个持久化POJO类) * @Id —— 注解声明了该实体bean的标识属性(对应表中的主键)。 * @Table —— 注解声明了该实体bean映射指定的表(table),目录(catalog)和...

    Hibernate连接SQLite配置说明和方言代码

    Hibernate连接SQLite配置步骤: 1、添加SQLite库: 1.1、将两个jar包:com.zy.hibernate.dialect.SQLiteDialect.jar、sqlite-jdbc-3.7.2.jar拷贝到“\WEB-INF\lib”文件夹下; 2、配置hibernate: 2.1、将...

    HibernateAPI中文版.chm

    10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化...

    hibernate3.2中文文档(chm格式)

    10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化...

    最全Hibernate 参考文档

    10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化...

    T-SQL高级查询

    子查询也称为内部查询或内部选择,而包含子查询的语句也成为外部查询或外部选择。 # from (select … table)示例 将一个table的查询结果当做一个新表进行查询 select * from ( select id, name from student ...

    Hibernate中文详细学习文档

    10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化...

    Hibernate 中文 html 帮助文档

    10.4.4. 使用原生SQL的查询 10.5. 修改持久对象 10.6. 修改脱管(Detached)对象 10.7. 自动状态检测 10.8. 删除持久对象 10.9. 在两个不同数据库间复制对象 10.10. Session刷出(flush) 10.11. 传播性持久化...

    hibernate.properties

    ## DO NOT specify hibernate.connection.sqlDialect ## InterClient #hibernate.connection.driver_class interbase.interclient.Driver #hibernate.connection.url jdbc:interbase://localhost:3060/C:/firebird...

    SQL21日自学通

    Integrity Constraint Violated--Parent Key Not Found 482 Oracle Not Available 483 Inserted Value Too Large for Column 483 TNS:listener Could Not Resolve SID Given in Connect Descriptor 484 Insufficient...

    sqlite的一个例子

    //不使用回调函数的查询 int inquire_nocb(sqlite3 *db) { int nrow = 0,ncolumn = 0; char **azResult=0; int i = 0; char *sql; char *zErrMsg; sql = "SELECT * FROM SensorData"; if(SQLITE_OK != sqlite...

    计算机病毒与防护:SQL注入漏洞的利用.ppt

    使用示例-使用Sqlmap获取DVWA数据 (6)判断列名:root@kali:~# sqlmap -r /etc/url -D dvwa -T users –column 单击此处添加标题 * * * * * * * * * * * * * * * * 目录页 SQL注入漏洞的利用 数据提取方式 数据提取...

Global site tag (gtag.js) - Google Analytics