﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-走在空中的人-随笔分类-hibernate</title><link>http://www.blogjava.net/wx886104/category/34068.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 07 Sep 2010 18:42:05 GMT</lastBuildDate><pubDate>Tue, 07 Sep 2010 18:42:05 GMT</pubDate><ttl>60</ttl><item><title>Hibernate Tools</title><link>http://www.blogjava.net/wx886104/archive/2010/09/06/331214.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Mon, 06 Sep 2010 08:13:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2010/09/06/331214.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/331214.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2010/09/06/331214.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/331214.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/331214.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;Hibernate ToolsReference GuideVersion: 3.2.0.GATable of ContentsPreface .........................................................................................................&nbsp;&nbsp;<a href='http://www.blogjava.net/wx886104/archive/2010/09/06/331214.html'>阅读全文</a><img src ="http://www.blogjava.net/wx886104/aggbug/331214.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2010-09-06 16:13 <a href="http://www.blogjava.net/wx886104/archive/2010/09/06/331214.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate hql distinct</title><link>http://www.blogjava.net/wx886104/archive/2009/08/17/291519.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Mon, 17 Aug 2009 09:16:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2009/08/17/291519.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/291519.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2009/08/17/291519.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/291519.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/291519.html</trackback:ping><description><![CDATA[<div class="tit">hibernate hql distinct</div>
<div class="date">2008-08-03 14:15</div>
<table style="table-layout: fixed; width: 100%">
    <tbody>
        <tr>
            <td>
            <div class="cnt" id="blog_text">
            <table style="table-layout: fixed">
                <tbody>
                    <tr>
                        <td>
                        <div class="cnt"><strong>hibernate</strong> <strong>hql</strong> <strong>distinct</strong><br />
                        在 hibernate的reference 中提到过hql是可以直接使用distinct的<br />
                        <br />
                        --<br />
                        关键字distinct与all 也可以使用，它们具有与SQL相同的语义. <br />
                        select distinct cat.name from Cat cat<br />
                        select count(distinct cat.name), count(cat) from Cat cat<br />
                        --<br />
                        <br />
                        所以,我就尝试使用<br />
                        select distinct c.* from Column c, 在hql中,使用 * 必须要用到别名的<br />
                        查询出的结果是 null来的.<br />
                        在mysql 中,这种写法是没有错的,..然后我再试了一下<br />
                        select distinct c from Column c , 这样得出的结果是非null,是正确的.</div>
                        </td>
                    </tr>
                </tbody>
            </table>
            </div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/wx886104/aggbug/291519.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2009-08-17 17:16 <a href="http://www.blogjava.net/wx886104/archive/2009/08/17/291519.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate中的HQL （转）</title><link>http://www.blogjava.net/wx886104/archive/2009/08/17/291451.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Mon, 17 Aug 2009 03:44:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2009/08/17/291451.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/291451.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2009/08/17/291451.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/291451.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/291451.html</trackback:ping><description><![CDATA[<p>HQL是个中立的语言,即它跟任何数据库都没关系，你如果使用HQL的话通过数据库方言都会翻译成相应的数据库的SQL语句,包括[排序,子查询,调用SQL中的函数].<br />
&nbsp; HQL中关键字是不区分大小写的，但是属性和类型是区分大小写的。<br />
&nbsp;&nbsp; 1&gt;.简单属性查询<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&gt;).单一属性查询,返回结果集属性列表,元素类型和实体类中相应的属性类型一致。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session = HibernateUtils.getSession();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.beginTransaction();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //返回结果集属性列表，元素类型和实体类中相应的属性类型一致<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select name from Student").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String name = (String)iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.getTransaction().commit();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&gt;).多个属性查询,返回的集合元素是对象数组，数组元素的类型和对<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 应的属性在实体类中的类型一致，数组的长度取决于select中属性的个数。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select id, name from Student").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] obj = (Object[])iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(obj[0] + "," + obj[1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&gt;).如果认为返回数组不够对象化，可以采用HQL动态实例化Student对象，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但是Strudent类中必须提供相应的构造函数。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select new Student(id, name) from Student").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student student = (Student)iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(student.getId() + "," + student.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; 2&gt;.实体对象查询<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&gt;).返回Student对象的集合,可以忽略select,表可以使用别名,别名可以用as也可以不用。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("from Student s").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //List students = session.createQuery("from Student as s").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student student = (Student)iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(student.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&gt;).返回Student对象的集合,使用select查询实体对象，必须采用别名。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select s from Student as s").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student student = (Student)iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(student.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&gt;).不支持select * from .....这样的查询语句。如：下面的语句是错误的<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select * from Student").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&gt;).list和iterator的区别?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们知道,session.createQuery()得到个Query,而从Hibernate API中我们可<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以发现Query有两个方法list()和iterator()用于返回结果集。它们的区别在<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 于：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *list每次都会发出sql语句，list会向缓存中放入数据，而不利用缓存中的数据<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *iterator在默认情况下利用缓存数据,但如果缓存中不存在数据有可能出现N+1问题<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&gt;).N+1问题<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在默认情况下,使用query.iterator()查询，有可能出现N+1问题<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1: 首先发出一条查询对象id列表的sql语句<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; N: 根据id列表到缓存中查询,如果缓存中不存在与之匹配的数据,那么会根据<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id发出相应的sql语句<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Iterator iter = session.createQuery("from Student").iterate();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(iter.hasNext()) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student student = (Student)iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(student.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; 3&gt;.条件查询<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&gt;).可以采用拼字符串的方式传递参数。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select s.id, s.name from Student s where s.name like '%1%'").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] obj = (Object[])iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(obj[0] + "," + obj[1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&gt;).可以使用？方式传递参数,参数的索引从0开始;传递的参数值如果是字符型的，不用<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 单引号引起来;可以使用方法链编程。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select s.id, s.name from Student s where s.name like ?")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .setParameter(0, "%1%")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] obj = (Object[])iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(obj[0] + "," + obj[1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&gt;).可以使用 ：参数名称 的方式传递参数值。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select s.id, s.name from Student s where s.name like :myname")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .setParameter("myname", "%1%")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] obj = (Object[])iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(obj[0] + "," + obj[1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&gt;).如果传递多个参数，可以使用setParameterList方法。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select s.id, s.name from Student s where s.id in(:myids)")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .setParameterList("myids", new Object[]{1, 2, 3, 4, 5})<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] obj = (Object[])iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(obj[0] + "," + obj[1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&gt;).在HQL中可以使用数据库的函数,像mysql中的date_format。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select s.id, s.name from Student s where date_format(s.createTime, '%Y-%m')=?")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .setParameter(0, "2008-02")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] obj = (Object[])iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(obj[0] + "," + obj[1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&gt;).查询某个日期段的数据。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //查询2008-01-10到2008-02-15创建的学生<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select s.id, s.name from Student s where s.createTime between ? and ?")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .setParameter(0, sdf.parse("2008-01-10 00:00:00"))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .setParameter(1, sdf.parse("2008-02-15 23:59:59"))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] obj = (Object[])iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(obj[0] + "," + obj[1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; 4&gt;.Hibernate也支持直接使用sql查询。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createSQLQuery("select * from t_student").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] obj = (Object[])iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(obj[0] + "," + obj[1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; 5&gt;.外置命名查询,主要完成hql语句和程序的解耦合.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&gt;).在映射文件中采用&lt;query&gt;标签来定义HQL语句。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;query name="searchStudents"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;![CDATA[<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT s FROM Student s where s.id&lt;?<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ]]&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/query&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&gt;).在程序中采用session.getNamedQuery()方法得到HQL查询串。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.getNamedQuery("searchStudents")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .setParameter(0, 10)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student student = (Student)iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(student.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; 6&gt;.查询过滤器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&gt;).在影射文件中定义过滤器参数。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;filter-def name="filtertest"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;filter-param name="myid" type="integer"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/filter-def&gt;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&gt;).在类的影射中使用这些参数。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;filter name="filtertest" condition="id &amp;lt; :myid"/&gt;&lt;!--&amp;lt;转义字符"&lt;"--&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&gt;).在程序中启用过滤器。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.enableFilter("filtertest")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .setParameter("myid", 10);&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("from Student").list();//会在该session中所有的查询后自动加上过滤器中的条件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student student = (Student)iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(student.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 参见:Student.hbm.xml,FilterQueryTest.java<br />
&nbsp;&nbsp;&nbsp;&nbsp; 7&gt;.分页查询<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&gt;).setFirstResult()从0开始<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&gt;).setMaxResults每页显示多少条数据。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("from Student")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .setFirstResult(1)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .setMaxResults(2)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student student = (Student)iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(student.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; 8&gt;.对象导航查询<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Hibernate支持对象的，因此可以用对象导航查询。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Student类总有Classes类型的属性classes，而Classes类有name属性。我们通过classes的name来查询student:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select s.name from Student s where s.classes.name like '%1%'").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String name = (String)iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(name);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; 9&gt;.连接查询<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&gt;).内连接:只是把两边都有的记录查出来,可以省略inner，并且只要影射文件中已经设好了表之间的关系，无须用on表示查询条件。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //List students = session.createQuery("select c.name, s.name from Student s join s.classes c").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select c.name, s.name from Student s inner join s.classes c").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] obj = (Object[])iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(obj[0] + "," + obj[1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&gt;).外左连接:把左边表的所有记录都显示出来。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select c.name, s.name from Classes c left join c.students s").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] obj = (Object[])iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(obj[0] + "," + obj[1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&gt;).外右连接:把右边表的所有记录都显示出来。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students = session.createQuery("select c.name, s.name from Classes c right join c.students s").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] obj = (Object[])iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(obj[0] + "," + obj[1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; 10&gt;.统计查询<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&gt;).count。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Long count = (Long)session.createQuery("select count(*) from Student").uniqueResult();//返回的是单条记录<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(count);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&gt;).group by。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List students =session.createQuery("select c.name, count(s) from Student s join s.classes c " +<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "group by c.name order by c.name").list();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (Iterator iter=students.iterator(); iter.hasNext();) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object[] obj = (Object[])iter.next();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(obj[0] + ", " + obj[1]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; 11&gt;.DML风格的操作(尽量少用,因为缓存不同步)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; update和delete只会更新数据库中的数据,而缓存中不会改，此时如果取得该数据还是缓存中的,而不会是更新后的，因此缓<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 存中的数据就成了脏数据了。如果批量更新的话，还会给内存带来很大压力。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.createQuery("update Student s set s.name=? where s.id &lt; ?")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .setParameter(0, "李四")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .setParameter(1, 5)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .executeUpdate();</p>
<p><br />
本文来自CSDN博客，转载请标明出处：http://blog.csdn.net/yangfeitarena/archive/2009/04/17/4086334.aspx</p>
<img src ="http://www.blogjava.net/wx886104/aggbug/291451.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2009-08-17 11:44 <a href="http://www.blogjava.net/wx886104/archive/2009/08/17/291451.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts 2.0整合Hibernate 3.2开发注册登录系统(转)</title><link>http://www.blogjava.net/wx886104/archive/2009/02/09/253883.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Mon, 09 Feb 2009 04:08:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2009/02/09/253883.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/253883.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2009/02/09/253883.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/253883.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/253883.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/wx886104/archive/2009/02/09/253883.html'>阅读全文</a><img src ="http://www.blogjava.net/wx886104/aggbug/253883.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2009-02-09 12:08 <a href="http://www.blogjava.net/wx886104/archive/2009/02/09/253883.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts 2.0整合Hibernate 3.2开发注册登录系统(转)</title><link>http://www.blogjava.net/wx886104/archive/2009/02/09/253881.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Mon, 09 Feb 2009 04:07:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2009/02/09/253881.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/253881.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2009/02/09/253881.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/253881.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/253881.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;只有注册用户登录后才能阅读该文。<a href='http://www.blogjava.net/wx886104/archive/2009/02/09/253881.html'>阅读全文</a><img src ="http://www.blogjava.net/wx886104/aggbug/253881.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2009-02-09 12:07 <a href="http://www.blogjava.net/wx886104/archive/2009/02/09/253881.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate--getCurrentSession()与openSession()的区别</title><link>http://www.blogjava.net/wx886104/archive/2008/12/23/247861.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Tue, 23 Dec 2008 01:44:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/12/23/247861.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/247861.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/12/23/247861.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/247861.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/247861.html</trackback:ping><description><![CDATA[getCurrentSession()与openSession()的区别？<br />
&nbsp;* 采用getCurrentSession()创建的session会绑定到当前线程中，而采用openSession()<br />
&nbsp;&nbsp; 创建的session则不会<br />
&nbsp;* 采用getCurrentSession()创建的session在commit或rollback时会自动关闭，而采用openSession()<br />
&nbsp;&nbsp; 创建的session必须手动关闭<br />
&nbsp;&nbsp; <br />
使用getCurrentSession()需要在hibernate.cfg.xml文件中加入如下配置：<br />
&nbsp;* 如果使用的是本地事务（jdbc事务）<br />
&nbsp;&lt;property name="hibernate.current_session_context_class"&gt;thread&lt;/property&gt;<br />
&nbsp;* 如果使用的是全局事务（jta事务）<br />
&nbsp;&lt;property name="hibernate.current_session_context_class"&gt;jta&lt;/property&gt;&nbsp;
<img src ="http://www.blogjava.net/wx886104/aggbug/247861.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-12-23 09:44 <a href="http://www.blogjava.net/wx886104/archive/2008/12/23/247861.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate--hql语句小心得</title><link>http://www.blogjava.net/wx886104/archive/2008/12/12/245999.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Fri, 12 Dec 2008 09:31:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/12/12/245999.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/245999.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/12/12/245999.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/245999.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/245999.html</trackback:ping><description><![CDATA[<p>今天在写hql删除语句是想通过in来实现删除多条数据，但是发现hql语句的delete使用</p>
where中使用in会报错Operand should contain %d column(s)"。<br />
另外在设置了二级缓存时，如果策略为read-only时，通过hql的delete通过id删除一条记录时，可以。但如果是通过session.load/get通过id先将记录查询出来，在session.delete的话，会出错。将策略改为read-write。即可。<br />
<img src ="http://www.blogjava.net/wx886104/aggbug/245999.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-12-12 17:31 <a href="http://www.blogjava.net/wx886104/archive/2008/12/12/245999.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate的Ehcache</title><link>http://www.blogjava.net/wx886104/archive/2008/12/06/244746.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Sat, 06 Dec 2008 02:41:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/12/06/244746.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/244746.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/12/06/244746.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/244746.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/244746.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &lt;!--[if !supportLists]--&gt;1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--[endif]--&gt;类图                                                CacheManager                                ...&nbsp;&nbsp;<a href='http://www.blogjava.net/wx886104/archive/2008/12/06/244746.html'>阅读全文</a><img src ="http://www.blogjava.net/wx886104/aggbug/244746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-12-06 10:41 <a href="http://www.blogjava.net/wx886104/archive/2008/12/06/244746.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate--使用javabean来保存查询结果</title><link>http://www.blogjava.net/wx886104/archive/2008/11/25/242572.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Tue, 25 Nov 2008 07:55:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/11/25/242572.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/242572.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/11/25/242572.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/242572.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/242572.html</trackback:ping><description><![CDATA[有写时候需要使用一下查询两个类的某个属性<br />
如：s.createQuery("select a.name,b.address from user a,add b where xxx");<br />
得出来的接过可以通过Object【】通过循环打印出来。<br />
不过我们也可以通过javabean来保存，以更符合面向对象编程的思想。<br />
eg：s.createQuery("select new 报名.ad(a.name,b.address) from user a,add b where xxxx");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(注：在此的包名一定不可少)<br />
class ab{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类型&nbsp; name；类型 address；//类型要与user和add类中的的name，address类型一致<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getter/setter<br />
}<br />
这样就可以同过ab.getXXX()来获取属性。
<img src ="http://www.blogjava.net/wx886104/aggbug/242572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-11-25 15:55 <a href="http://www.blogjava.net/wx886104/archive/2008/11/25/242572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate中get和load的区别</title><link>http://www.blogjava.net/wx886104/archive/2008/11/25/242521.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Tue, 25 Nov 2008 05:10:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/11/25/242521.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/242521.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/11/25/242521.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/242521.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/242521.html</trackback:ping><description><![CDATA[<p>1、当数据库不存在对应ID数据时，调用load()方法将会抛出ObjectNotFoundException异常，get()方法将返回null，我比较喜欢使用get()方法。</p>
<p>2、当对象.hbm.xml配置文件&lt;class&gt;元素的lazy属性设置为true时，调用load()方法时则返回持久对象的代理类实例，此时的代理类实例是由运行时动态生成的类，该代理类实例包括原目标对象的所有属性和方法，该代理类实例的属性除了ID不为null外，所在属性为null值，查看日志并没有Hibernate SQL输出，说明没有执行查询操作，当代理类实例通过getXXX()方法获取属性值时，Hiberante才真正执行数据库查询操作。当对象.hbm.xml配置文件&lt;class&gt;元素的lazy属性设置为false时，调用load()方法则是立即执行数据库并直接返回实体类，并不返回代理类。而调用get()方法时不管lazy为何值，都直接返回实体类。</p>
<p>3、load()和get()都会先从Session缓存中查找，如果没有找到对应的对象，则查询Hibernate二级缓存，再找不到该对象，则发送一条SQL语句查询。</p>
<img src ="http://www.blogjava.net/wx886104/aggbug/242521.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-11-25 13:10 <a href="http://www.blogjava.net/wx886104/archive/2008/11/25/242521.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate学习笔记--数据关联--一对一关联</title><link>http://www.blogjava.net/wx886104/archive/2008/11/25/242519.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Tue, 25 Nov 2008 05:05:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/11/25/242519.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/242519.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/11/25/242519.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/242519.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/242519.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 数据关联是ORM的一个重要特征，但往往也是导致系统性能低下的诱因。1.一对一关联&nbsp;&nbsp;&nbsp;&nbsp;一对一关联有两种：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&gt;.主键关联：即两张表通过主键形成一对一的关联关系。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp...&nbsp;&nbsp;<a href='http://www.blogjava.net/wx886104/archive/2008/11/25/242519.html'>阅读全文</a><img src ="http://www.blogjava.net/wx886104/aggbug/242519.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-11-25 13:05 <a href="http://www.blogjava.net/wx886104/archive/2008/11/25/242519.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>org.hibernate.MappingException: property-ref to unmapped class: Departinfo</title><link>http://www.blogjava.net/wx886104/archive/2008/11/24/242301.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Mon, 24 Nov 2008 09:18:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/11/24/242301.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/242301.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/11/24/242301.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/242301.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/242301.html</trackback:ping><description><![CDATA[就是DepartInfo没有相应的映射文件。 <br />
看看是不是Hibernate.cfg.xml里面没有加入这个POJO的映射文件，或者DepartInfo.hbm.xml的内容有没有出错的地方。</ca>
<img src ="http://www.blogjava.net/wx886104/aggbug/242301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-11-24 17:18 <a href="http://www.blogjava.net/wx886104/archive/2008/11/24/242301.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Can't start a cloned connection while in manual transaction mode之hibernate，eclipse下解决</title><link>http://www.blogjava.net/wx886104/archive/2008/11/24/242299.html</link><dc:creator>勒紧皮带向前冲</dc:creator><author>勒紧皮带向前冲</author><pubDate>Mon, 24 Nov 2008 09:16:00 GMT</pubDate><guid>http://www.blogjava.net/wx886104/archive/2008/11/24/242299.html</guid><wfw:comment>http://www.blogjava.net/wx886104/comments/242299.html</wfw:comment><comments>http://www.blogjava.net/wx886104/archive/2008/11/24/242299.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/wx886104/comments/commentRss/242299.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wx886104/services/trackbacks/242299.html</trackback:ping><description><![CDATA[出现Can't start a cloned connection while in manual transaction mode错误，从网上找到原因及解决办法如下：
<p style="color: rgb(0,0,0)">原因一般是当你在一个SQL SERVER的JDBC连接上执行多个STATEMENTS的操作，或者是手动事务状态（AutoCommit=false) 并且使用<strong>默认的模式.</strong> direct (SelectMethod=direct) 模式.</p>
<p style="color: rgb(0,0,0)">解决办法<br />
当你使用手动事务模式时，必须把<strong>SelectMethod 属性的值设置为 Cursor</strong>, 或者是确保在你的连接只有一个STATEMENT操作。</p>
<p style="color: rgb(0,0,0)">修改url<br />
&nbsp;
<property value="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=XX;<strong>SelectMethod=cursor</strong>"></property>
<br />
加入<strong>SelectMethod=cursor</strong>即可</p>
<p style="color: rgb(0,0,0)">在eclipse下通过在cfg文件中uri加入即可</p>
<img src ="http://www.blogjava.net/wx886104/aggbug/242299.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wx886104/" target="_blank">勒紧皮带向前冲</a> 2008-11-24 17:16 <a href="http://www.blogjava.net/wx886104/archive/2008/11/24/242299.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>