在hibernate中,用hql语句查询实体类,采用list方法的返回结果为一个List,该List中封装的对象分为以下三种情况:
1.查询全部字段的情况下,如"from 实体类",list中封装的对象为实体类本身,各属性都将得到填充。
2.只查询一个字段,默认情况下,list中封装的是Object对象。
3.查询两个或两个以上的字段,默认情况下,list中封装的是Object[],长度与所查询的字段数一致。
对于后两种情况,用标签遍历时不太方便,因为无法直接转换成实体类的对象。比较简单的解决方法是:
在hql中使用 select new 包名.类名(属性1,属性2……) from 实体类,同时在实体类中添加带参的构造方法,参数的个数和顺序与(属性1,属性2……) 保持一致,这样我们得到的list中存放的依然是实体类的对象,所查询到的属性得到了填充,使用起来更为方便。
-----------------------------------
select new list(p.name, p.address) from Person as p ;
select将选择出来的属性存入一个List对象中
select new ClassTest(p.name, p.address) from Person as p;
select将选择出来的属性封装成对象,前提是ClassTest支持p.name, p.address的构造函数,
select new map(p.name as personName) from Person as p ;
select将选中的表达式命名为别名,这种用法与new map()结合,选择出来的是Map结构,
以personName为key,将实际选择出来的值作为value
分享到:
相关推荐
在给定的文档中,我们看到一个例子,展示了如何在 Hibernate 中配置一个具有集合属性的实体类 `Person`,以及如何通过映射文件启用延迟加载。`Person` 类拥有一个 `Set<Address>` 类型的 `addresses` 属性,表示个人...
描述部分虽然为空,但通常情况下,多态查询可能涉及到的概念包括:继承、多态性、动态类型、实体类、继承层次结构的映射、集合的多态处理等。根据给出的博客链接,我们可以推测该博客可能详细讲解了这些概念在...
Criteria Builder是Criteria API的一部分,提供了构建表达式和查询的工具。它可以创建更复杂的条件,如OR、AND、IN等,以及比较、函数调用等。Criteria Builder让编写动态查询变得容易,尤其是在处理参数化查询时。...
本文将深入探讨如何使用Hibernate进行数据表中的部分字段查询,这在实际开发中是非常常见的需求。 首先,理解Hibernate的核心概念:实体(Entity)、持久化类(Persistent Class)和映射文件(Mapping File)。实体...
这四个属性是Hibernate配置的核心部分,理解和正确设置它们能有效提升应用的性能和稳定性。在实际开发中,还需要根据具体项目需求和数据库环境进行调整。例如,对于生产环境,我们可能需要更严谨的模式验证(`...
另一种方法是改用原生的SQL查询,利用Hibernate的`Session.createSQLQuery()`方法来执行,但这可能意味着失去了部分ORM(对象关系映射)的便利性。 然而,如果你坚持使用HQL并且不想采用上述替代方案,你可能会需要...
总结起来,Hibernate的分页查询和数据库连接管理是其强大功能的重要组成部分。正确理解和使用这些特性,能够帮助开发者构建出高性能、可扩展的Java应用。在实际项目中,根据具体需求和场景选择合适的策略,结合最佳...
在第14部分,我们将深入探讨如何在Hibernate中执行查询以及如何管理数据库事务,特别是在并发环境中。 **描述:**描述为空,但我们可以推测博客内容可能包含实际示例、最佳实践以及对Hibernate查询API和事务管理...
根据提供的标题、描述以及部分代码内容,我们可以了解到这段材料主要涉及的是Hibernate框架中的HQL(Hibernate Query Language)查询语言的使用。接下来将详细介绍HQL的相关知识点。 ### HQL概述 HQL是Hibernate...
6. **投影(Projection)**:不同于传统的返回完整实体,Projection允许我们只获取查询结果的一部分,比如特定字段的值或者计算结果。 7. **动态实体(Dynamic Instantiation)**:在某些情况下,我们可能不知道...
它允许开发者以类和属性的方式表达查询,极大地提高了代码的可读性和可维护性。HQL支持各种操作,如选择、投影、连接、分组、排序等,还可以进行复杂的条件查询和子查询。例如,以下是一个简单的HQL查询示例,用于...
虽然描述部分为空,但根据给定的博文链接,我们可以推测文章可能详细解释了Hibernate中的级联查询概念,可能包括实际应用示例和源码解析。博主可能通过具体的例子展示了如何配置和使用级联查询,以及可能遇到的问题...
Hibernate查询之HQL是ORM(对象关系映射)框架Hibernate中的一个重要组成部分,它是一种面向对象的查询语言,与SQL有着显著的区别。HQL允许开发者使用类名和属性而不是表名和列名进行查询,从而更好地适应面向对象的...
8. **投影(Projections)**:获取查询结果的部分属性,而非整个对象,可以提高性能。 9. **动态实体(Dynamic Entities)**:用于创建动态查询,无需预先定义实体类。 10. **Caching**:为了提高性能,Hibernate...
本篇文章将深入探讨在Hibernate3中如何通过Native SQL查询部分字段,并将其映射到具体的Java对象上。这种方式在处理一些特定的、效率较高的SQL查询时非常有用。 首先,我们需要理解Hibernate中的`SQLQuery`接口,这...
HQL(Hibernate Query Language)是一种面向对象的查询语言,它允许开发者使用类及其属性来编写查询语句,而不是传统的SQL语句。这使得开发人员能够更加专注于业务逻辑而不用深入到SQL层面。HQL支持各种复杂的查询,...
Hibernate 更新某些字段 ...在 Hibernate 的 XML 配置文件中,我们可以设置某些属性的 update 属性为 false,这样 Hibernate 就不会更新这些属性。例如,我们可以设置 age 属性的 update 属性为 false: ```xml ...
总结来说,模仿Hibernate生成SQL语句需要对Hibernate的ORM机制有深入理解,包括实体类的定义、属性映射、查询API的使用,以及Java反射的应用。通过这种方式,开发者可以自定义查询逻辑,同时利用Hibernate的强大功能...
同时,Hibernate还提供了Criteria API,它是QBC的一部分,提供了更多的动态查询功能,可以组合多个条件,甚至可以与DetachedCriteria结合,实现更复杂的查询逻辑。 总结来说,Java_Hibernate中的QBC和HQL各有优势和...
查询缓存是Hibernate提供的第二级缓存的一部分,用于存储查询结果。它的主要目的是减少对数据库的访问次数,提高应用性能。查询缓存的工作原理是:当执行一次查询后,如果查询结果没有发生变化,那么下一次相同的...