`
Supanccy2013
  • 浏览: 223837 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

hql select 子查询的属性可封装成list、具体对象,改变默认的数组类型

阅读更多
1,select子查询属性组成成list
    //把select选择的属性封装成list
    public void testHqlFindPropertyAsList(){
    	Configuration cfg = new Configuration().configure();
    	SessionFactory sessionFactory = cfg.buildSessionFactory();
    	Session session = sessionFactory.openSession();
    	Transaction ts = session.beginTransaction();
    	//注意查询属性的方式:使用 p.id  p.name  p.address
    	List persons = session.createQuery("select new List(p.id,p.name,p.address) from Person p where p.name like :myname ")
    			       .setString("myname", "%lijuan%").list();
    	for(Iterator it = persons.iterator(); it.hasNext();){
    		List eachList = (List)it.next();
    		for(Iterator it2 = eachList.iterator(); it2.hasNext();){
    			System.out.println();
    			System.out.println("***************************");
    			System.out.println(it2.next());
    			System.out.println("**************************");
    			System.out.println();
    		}
    	}
}

1,把select子查属性组装成新的对象
    //把select选择的属性封装成对象
    public void testHqlFindPropertyAsOjbect(){
    	Configuration cfg = new Configuration().configure();
    	SessionFactory sessionFactory = cfg.buildSessionFactory();
    	Session session = sessionFactory.openSession();
    	Transaction ts = session.beginTransaction();
    	
    	List smalPersonList = session.createQuery("select new SmalPerson(p.name,p.age) from Person p")
			       .setString("myname", "%lijuan%").list();
    	for(Iterator it = smalPersonList.iterator();it.hasNext();)
    	{
        	SmalPerson sp = (SmalPerson)it.next();
        	System.out.println(sp.getAge());
        	System.out.println(sp.getName());
        }
    }
分享到:
评论

相关推荐

    HQL查询及语法

    - `select p.name.firstName from Person as p`: 如果`name`属性本身是一个复合对象,可以通过`.`来访问其子属性。 3. **构造复杂数据类型** - `select new list(p.name, p.address) from Person as p`: 构建一...

    Hibernate-HQL.rar_HQL_hibernate hql

    2. 子查询:可以在WHERE或HAVING子句中嵌套HQL查询,如“SELECT u FROM User u WHERE u.id IN (SELECT f.userId FROM Friend f WHERE f.friendId=100)”。 3. 动态HQL:通过Criteria API或Query接口,可以构建动态...

    HQL语言大全 跳楼分值

    - HQL查询的结果是对象列表,而非原始数据,需要通过对象属性访问数据。 - 为了避免SQL注入,确保正确处理用户输入的参数。 - 对于复杂查询,考虑性能优化,比如避免全表扫描,使用索引等。 HQL语言是Hibernate的...

    hql文档详解 相信对初步的朋友有帮助

    - **面向对象**:HQL支持基于类和对象属性的查询。 - **易于理解**:HQL的语法接近于自然语言,便于理解和编写。 - **灵活性高**:HQL支持复杂的查询操作,包括条件查询、分组查询等。 - **安全性**:使用HQL...

    06_传智播客hibernate教程_完善HibernateUtil类及hql查询入门

    除了基本的查询,HQL 还支持更复杂的操作,如联接查询、子查询、聚合函数等。例如,如果你需要根据用户名查找用户,可以这样写: ```java String hql = "from User where username = :username"; query = session....

    通用的hibernate查询

    除了基础的查询,Hibernate还支持连接查询、子查询、聚合函数等高级功能。例如,如果你需要根据用户的年龄进行分组并计算每个年龄段的用户数量,可以这样写: ```java String hql = "select age, count(*) from ...

    Hibernate通用分页.docx

    这个方法用于设置HQL查询中的参数,它遍历Map,根据值的类型(Collection、Object[] 或单一对象)调用相应的`setParameter`或`setParameterList`方法。 - **`getcountHql(String hql)`** 这个方法用于构建统计...

    Hibernate之原生Native SQL查询

    Native SQL查询允许我们直接使用SQL语句来与数据库交互,不受HQL的限制,可以充分利用SQL的功能,如存储过程、自定义函数、复杂的联接和子查询等。这种方式尤其适用于那些对数据库性能有极高要求或者对数据库结构有...

    SSH+ORACLE通用分页

    在Oracle数据库中,进行分页查询通常涉及SQL的`ROWNUM`或`ROW_NUMBER()`函数,以及子查询或嵌套查询。`ROWNUM`在早期版本的Oracle中被广泛使用,它会为每行数据分配一个唯一的数字,通过与特定范围的比较来获取指定...

    NHibernate应用讲解.pdf

    - 可以使用HQL或Criteria API来查询一个实体以及相关的多个子实体。 - **多对多关联查询**: - 多对多关联通常通过一个中间表来实现,查询时需考虑这个中间表。 #### 十一、延迟加载与立即加载 - **延迟加载**: -...

    hibernat培训教程,基础教程

    此外,还需要处理粒度、子类型、同一性、关联和对象结构导航等问题。手动处理这些匹配会导致工作量增加,甚至可能导致对象模型失真。JDBC API虽然成熟,但其面向语句的特性和在Insert、Update、Select操作时需要指定...

    java西安软件公司面试

    面试中,你需要熟练掌握SQL的基本查询语句(SELECT, INSERT, UPDATE, DELETE),能够编写复杂的联接(JOIN)查询,了解子查询、视图、存储过程的概念和使用,以及事务处理和索引优化等进阶话题。 除了这些核心技术...

    java分页例子

    1. 使用SQL语句实现分页:最直接的方法是在SQL查询语句中添加LIMIT和OFFSET关键字(MySQL),或者使用ROW_NUMBER()函数配合子查询(如Oracle、SQL Server)。例如: ```sql SELECT * FROM (SELECT ROW_NUMBER() ...

    JavaEE技术面试常见问题.doc

    - **HQL**:面向对象的查询语言。 - **Criteria**:灵活构建查询条件。 - **Native SQL**:直接使用SQL。 #### Spring 1. **SSH整合** - **SSH**:Struts+Spring+Hibernate的缩写,是经典的Java Web开发架构...

    java学习笔记

    - HQL查询语言:基于对象的查询方式。 4. **PL/SQL**: - 存储过程、函数、触发器的编写与调用。 - 数据库事务管理:COMMIT、ROLLBACK。 #### 三、Web开发技术 1. **JSP**: - JSP页面:HTML、JavaScript、...

    Java学习笔记-个人整理的

    {12.8}子查询}{161}{section.12.8} {12.9} 授权与回收权限}{161}{section.12.9} {12.10}示例}{162}{section.12.10} {12.10.1}exists}{165}{subsection.12.10.1} {12.11}集合操作}{165}{section.12.11} {12.11....

Global site tag (gtag.js) - Google Analytics