`
wlh269
  • 浏览: 449219 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HQL (五) 外置命名查询(sql语句单独保存起来)

阅读更多
外置命名查询
* 在要查询对象对应的映射文件(这里是student.hbm.xml)中采用<query>标签来定义hql

<query name="searchStudents">
<![CDATA[
select s from Student s where s.id<?
]]>
</query>



* 在程序中使用session.getNamedQuery()来得到hql查询串
参见:NameQueryTest.java
package com.wlh.hibernate;

import java.util.Iterator;
import java.util.List;

import junit.framework.TestCase;

import org.hibernate.Session;

public class NameQueryTest extends TestCase{

	public void testQuery1() {
		Session session = null;
		try {
			session = HibernateUtils.getSession();
			session.beginTransaction();
			
			List students=session.getNamedQuery("studentQuery")
								 .setParameter(0, 10)						
								 .list();
			for(Iterator iter=students.iterator();iter.hasNext();){
				Student o=(Student)iter.next();
				System.out.println("name="+o.getName());
			}
			session.getTransaction().commit();
		}catch(Exception e) {
			e.printStackTrace();
			session.getTransaction().rollback();
		}finally {
			HibernateUtils.closeSession(session);
		}
	}	
}

分享到:
评论
1 楼 beginoftheworld 2011-12-05  
楼主好:
    以上的程序通过getNamedQuery("studentQuery").setParameter(0, 10)拿到得SQL语句是这样的吗:select s from Student s where s.id < 10 ? 还是只在query.list()执行时,那个参数才传进去 ?

相关推荐

Global site tag (gtag.js) - Google Analytics