`

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

 
阅读更多
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名称。  

 

分享到:
评论

相关推荐

    hibernate将本地SQL查询结果封装成对象

    如果查询返回的是单个对象,我们可以使用`addEntity()`方法指定结果应映射到的实体类: ```java query.addEntity(MyEntity.class); MyEntity result = (MyEntity) query.uniqueResult(); ``` 如果查询返回的是多个...

    Column Not Found(解决方案).md

    Column Not Found(解决方案).md

    Hibernate_实体类_注解_说明

    ### Hibernate实体类注解详解 Hibernate作为Java领域中流行的ORM(对象关系映射)框架,提供了丰富的注解来简化实体类与数据库表之间的映射。本文将深入解析一系列关键注解,帮助理解Hibernate如何实现这一过程。 ...

    Hibernate生产SQL语句

    总结来说,模仿Hibernate生成SQL语句需要对Hibernate的ORM机制有深入理解,包括实体类的定义、属性映射、查询API的使用,以及Java反射的应用。通过这种方式,开发者可以自定义查询逻辑,同时利用Hibernate的强大功能...

    hibernate常见错误解决方案

    ### Hibernate常见错误解决方案 在开发基于Hibernate框架的应用程序时,我们经常会遇到各种各样的异常情况。这些异常不仅会影响系统的正常运行,还可能增加调试难度。本文将针对几个常见的Hibernate异常进行详细...

    使用Hibernate访问sqlserver数据库

    **使用Hibernate访问SQL Server数据库** Hibernate是一个开源的对象关系映射(ORM)框架,它为Java开发者提供了一种在关系数据库和面向对象编程之间架起桥梁的方式。通过使用Hibernate,我们可以避免编写大量的SQL...

    Hibernate错误及解决办法集合

    1. **HQL语句问题**:在HQL查询语句中使用的实体类名称与数据库表名不一致。 2. **配置问题**:`application.xml`或`hibernate.cfg.xml`文件中存在配置错误。 3. **映射文件路径错误**:实体类的映射文件路径配置不...

    hibernate映射和查询

    在给定的文件中,`Hibernate 第二次课.docx` 可能包含了关于 Hibernate 映射和查询的详细讲解,涵盖了如何配置项目、创建实体类、编写映射文件和执行查询等步骤。`第二章mysql.sql` 文件可能是用于配合 Hibernate ...

    sqlserver的hibernate

    **SQLServer与Hibernate的整合应用** 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,使得开发者可以更专注于业务逻辑而不是底层的SQL语句。本教程将介绍如何使用Hibernate操作...

    Hibernate 中文开发者文档

    3. **注解配置**: 除了XML,Hibernate也支持使用Java注解来定义实体类及其属性的映射。 **三、实体映射** 1. **@Entity**: 标记一个Java类为数据库实体。 2. **@Table**: 定义实体对应的数据库表名。 3. **@Id**: ...

    Hibernate+sqlserver2000分页

    本篇文章将深入探讨使用Hibernate ORM框架与SQL Server 2000数据库进行分页查询的方法。 首先,Hibernate是Java领域中最流行的ORM(对象关系映射)框架之一,它允许开发者使用面向对象的方式操作数据库,减少了直接...

    java根据实体类生成Hibernate映射文件

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者使用面向对象的方式来操作数据库,而无需关心底层SQL语句。映射文件是Hibernate中的关键元素,它定义了Java实体类与数据库表之间的...

    java实体类字段自定义-数据库字段和程序实体类属性不一致解决方案.docx

    Java 实体类字段自定义-数据库字段和程序实体类属性不一致解决方案 Java 实体类字段自定义是指在 Java 开发中,实体类的字段与数据库表的字段不一致的问题。这种情况下,需要实现实体类字段的自定义,以便与数据库...

    hibernate例子程序

    Hibernate 是一款强大的Java持久化框架,它为Java应用程序提供了对象关系映射(ORM)解决方案。通过Hibernate,开发者可以将数据库操作与业务逻辑解耦,使得开发更加高效,代码更易于维护。在“hibernate例子程序”...

    传智Hibernate框架资料

    5. **@Column**: 映射实体属性到表列。 **四、Hibernate操作数据库** 1. **持久化操作**: 通过Session的save()、persist()、update()、merge()方法完成对象的持久化。 2. **查询操作**: 使用Session的get()、load...

    hibernate错误解决方案

    ### Hibernate 错误解决方案 #### 一、概述 在使用Hibernate框架进行开发的过程中,经常会遇到各种各样的异常问题。这些问题可能会导致程序无法正常运行,甚至影响到系统的稳定性。本文将针对几个常见的Hibernate...

    Hibernate

    Hibernate 是一款开源的 ORM 解决方案,它允许 Java 应用程序以对象的方式来处理数据库事务,而不是传统的 SQL 语句。它提供了一种在 Java 应用程序中管理和持久化对象的机制,使得开发者能够更加专注于业务逻辑,而...

    strtus2+Spring+hibernate整合通过实体类生成数据库表

    6. **生成数据库表**:使用Hibernate的工具,如`hbm2ddl.auto`配置,可以设置为`create`或`update`,在应用启动时自动根据实体类生成或更新数据库表。 7. **编写业务逻辑**:在Service层实现业务逻辑,通过...

    Hibernate的使用以及介绍

    - 实体类是业务对象的Java类,通常继承自Hibernate的Serializable接口,包含业务属性,并使用注解或XML映射文件与数据库表字段关联。 4. **映射文件** - Hibernate使用XML文件(hbm.xml)定义实体类与数据库表的...

Global site tag (gtag.js) - Google Analytics