`

关于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语句

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

    使用Hibernate访问sqlserver数据库

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

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

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

    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实体类与数据库表之间的...

    hibernate例子程序

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

    传智Hibernate框架资料

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

    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)定义实体类与数据库表的...

    Hibernate_使用示例代码

    4. **属性映射(Field Mapping)**:实体类中的属性对应数据库表的列,使用`@Id`标识主键,`@GeneratedValue`处理自增,`@Column`定义列名等。 5. **Session接口**:Hibernate的主要工作接口,用于执行CRUD操作。`...

    Hibernate使用xdoclet生成映射文件和sql语句

    对于Hibernate,开发者可以在实体类上添加如`@Entity`、`@Table`、`@Column`等注解,XDoclet会读取这些注解,然后自动生成对应的Hibernate映射文件和数据库表创建的SQL语句。 1. **XDoclet使用**: - 安装与集成:...

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

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

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

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

    关于Hibernate3中文查询出错问题的解决

    在使用Hibernate3进行数据库操作时,中文查询出错是一个常见的问题,这主要涉及到字符编码、数据库配置以及Hibernate的设置等多个方面。以下将详细介绍如何解决这个问题。 首先,我们要明白错误的根源通常在于字符...

    hibernate框架基本包

    - **Criteria查询**: 除了传统的HQL(Hibernate Query Language)外,还可以使用Criteria API构造动态查询,更加灵活且类型安全。 - **事务管理**: Hibernate支持编程式和声明式事务管理。Session的begin...

    Native SQL查询 (使用SQLQuery).doc

    在查询时,如果实体在映射时有一个 many-to-one 的关联指向另外一个实体,必须也返回那个实体,否则会导致发生一个"column not found"的数据库错误。这些附加的字段可以使用*标注来自动返回,但我们希望还是明确指明...

Global site tag (gtag.js) - Google Analytics