⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 querycriteria.html

📁 关于hibernate的中文文档 关于hibernate的中文文档 关于hibernate的中文文档 关于hibernate的中文文档
💻 HTML
📖 第 1 页 / 共 2 页
字号:
           &#20320;&#21487;&#20197;&#33258;&#34892;&#35843;&#25972;<tt class="literal">Example</tt>&#20351;&#20043;&#26356;&#23454;&#29992;&#12290;        </p><pre class="programlisting">Example example = Example.create(cat)    .excludeZeroes()           //exclude zero valued properties    .excludeProperty("color")  //exclude the property named "color"    .ignoreCase()              //perform case insensitive string comparisons    .enableLike();             //use like for string comparisonsList results = session.createCriteria(Cat.class)    .add(example)    .list();</pre><p>            &#20320;&#29978;&#33267;&#21487;&#20197;&#20351;&#29992;examples&#22312;&#20851;&#32852;&#23545;&#35937;&#19978;&#25918;&#32622;&#26465;&#20214;&#12290;        </p><pre class="programlisting">List results = session.createCriteria(Cat.class)    .add( Example.create(cat) )    .createCriteria("mate")        .add( Example.create( cat.getMate() ) )    .list();</pre></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="querycriteria-projection"></a>15.7.&nbsp;&#25237;&#24433;(Projections)&#12289;&#32858;&#21512;&#65288;aggregation&#65289;&#21644;&#20998;&#32452;&#65288;grouping&#65289;</h2></div></div><div></div></div><p>            <tt class="literal">org.hibernate.criterion.Projections</tt>&#26159;            <tt class="literal">Projection</tt> &#30340;&#23454;&#20363;&#24037;&#21378;&#12290;&#25105;&#20204;&#36890;&#36807;&#35843;&#29992;            <tt class="literal">setProjection()</tt>&#24212;&#29992;&#25237;&#24433;&#21040;&#19968;&#20010;&#26597;&#35810;&#12290;        </p><pre class="programlisting">List results = session.createCriteria(Cat.class)    .setProjection( Projections.rowCount() )    .add( Restrictions.eq("color", Color.BLACK) )    .list();</pre><pre class="programlisting">List results = session.createCriteria(Cat.class)    .setProjection( Projections.projectionList()        .add( Projections.rowCount() )        .add( Projections.avg("weight") )        .add( Projections.max("weight") )        .add( Projections.groupProperty("color") )    )    .list();</pre><p>            &#22312;&#19968;&#20010;&#26465;&#20214;&#26597;&#35810;&#20013;&#27809;&#26377;&#24517;&#35201;&#26174;&#24335;&#30340;&#20351;&#29992; "group by" &#12290;&#26576;&#20123;&#25237;&#24433;&#31867;&#22411;&#23601;&#26159;&#34987;&#23450;&#20041;&#20026;<span class="emphasis"><em>            &#20998;&#32452;&#25237;&#24433;</em></span>&#65292;&#20182;&#20204;&#20063;&#20986;&#29616;&#22312;SQL&#30340;<tt class="literal">group by</tt>&#23376;&#21477;&#20013;&#12290;        </p><p>            &#20320;&#21487;&#20197;&#36873;&#25321;&#25226;&#19968;&#20010;&#21035;&#21517;&#25351;&#27966;&#32473;&#19968;&#20010;&#25237;&#24433;&#65292;&#36825;&#26679;&#21487;&#20197;&#20351;&#25237;&#24433;&#20540;&#34987;&#32422;&#26463;&#25110;&#25490;&#24207;&#25152;&#24341;&#29992;&#12290;&#19979;&#38754;&#26159;&#20004;&#31181;&#19981;&#21516;&#30340;&#23454;&#29616;&#26041;&#24335;&#65306;        </p><pre class="programlisting">List results = session.createCriteria(Cat.class)    .setProjection( Projections.alias( Projections.groupProperty("color"), "colr" ) )    .addOrder( Order.asc("colr") )    .list();</pre><pre class="programlisting">List results = session.createCriteria(Cat.class)    .setProjection( Projections.groupProperty("color").as("colr") )    .addOrder( Order.asc("colr") )    .list();</pre><p>            <tt class="literal">alias()</tt>&#21644;<tt class="literal">as()</tt>&#26041;&#27861;&#31616;&#20415;&#30340;&#23558;&#19968;&#20010;&#25237;&#24433;&#23454;&#20363;&#21253;&#35013;&#21040;&#21478;&#22806;&#19968;&#20010;            &#21035;&#21517;&#30340;<tt class="literal">Projection</tt>&#23454;&#20363;&#20013;&#12290;&#31616;&#32780;&#35328;&#20043;&#65292;&#24403;&#20320;&#28155;&#21152;&#19968;&#20010;&#25237;&#24433;&#21040;&#19968;&#20010;&#25237;&#24433;&#21015;&#34920;&#20013;&#26102;            &#20320;&#21487;&#20197;&#20026;&#23427;&#25351;&#23450;&#19968;&#20010;&#21035;&#21517;&#65306;        </p><pre class="programlisting">List results = session.createCriteria(Cat.class)    .setProjection( Projections.projectionList()        .add( Projections.rowCount(), "catCountByColor" )        .add( Projections.avg("weight"), "avgWeight" )        .add( Projections.max("weight"), "maxWeight" )        .add( Projections.groupProperty("color"), "color" )    )    .addOrder( Order.desc("catCountByColor") )    .addOrder( Order.desc("avgWeight") )    .list();</pre><pre class="programlisting">List results = session.createCriteria(Domestic.class, "cat")    .createAlias("kittens", "kit")    .setProjection( Projections.projectionList()        .add( Projections.property("cat.name"), "catName" )        .add( Projections.property("kit.name"), "kitName" )    )    .addOrder( Order.asc("catName") )    .addOrder( Order.asc("kitName") )    .list();</pre><p>            &#20320;&#20063;&#21487;&#20197;&#20351;&#29992;<tt class="literal">Property.forName()</tt>&#26469;&#34920;&#31034;&#25237;&#24433;&#65306;        </p><pre class="programlisting">List results = session.createCriteria(Cat.class)    .setProjection( Property.forName("name") )    .add( Property.forName("color").eq(Color.BLACK) )    .list();</pre><pre class="programlisting">List results = session.createCriteria(Cat.class)    .setProjection( Projections.projectionList()        .add( Projections.rowCount().as("catCountByColor") )        .add( Property.forName("weight").avg().as("avgWeight") )        .add( Property.forName("weight").max().as("maxWeight") )        .add( Property.forName("color").group().as("color" )    )    .addOrder( Order.desc("catCountByColor") )    .addOrder( Order.desc("avgWeight") )    .list();</pre></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="querycriteria-detachedqueries"></a>15.8.&nbsp;&#31163;&#32447;(detached)&#26597;&#35810;&#21644;&#23376;&#26597;&#35810;</h2></div></div><div></div></div><p>    		<tt class="literal">DetachedCriteria</tt>&#31867;&#20351;&#20320;&#22312;&#19968;&#20010;session&#33539;&#22260;&#20043;&#22806;&#21019;&#24314;&#19968;&#20010;&#26597;&#35810;&#65292;&#24182;&#19988;&#21487;&#20197;&#20351;&#29992;&#20219;&#24847;&#30340;    		 <tt class="literal">Session</tt>&#26469;&#25191;&#34892;&#23427;&#12290;    	</p><pre class="programlisting">DetachedCriteria query = DetachedCriteria.forClass(Cat.class)    .add( Property.forName("sex").eq('F') );    Session session = ....;Transaction txn = session.beginTransaction();List results = query.getExecutableCriteria(session).setMaxResults(100).list();txn.commit();session.close();</pre><p>			<tt class="literal">DetachedCriteria</tt>&#20063;&#21487;&#20197;&#29992;&#20197;&#34920;&#31034;&#23376;&#26597;&#35810;&#12290;&#26465;&#20214;&#23454;&#20363;&#21253;&#21547;&#23376;&#26597;&#35810;&#21487;&#20197;&#36890;&#36807;			<tt class="literal">Subqueries</tt>&#25110;&#32773;<tt class="literal">Property</tt>&#33719;&#24471;&#12290;		</p><pre class="programlisting">DetachedCriteria avgWeight = DetachedCriteria.forClass(Cat.class)	.setProjection( Property.forName("weight").avg() );session.createCriteria(Cat.class)	.add( Property.forName("weight).gt(avgWeight) )	.list();</pre><pre class="programlisting">DetachedCriteria weights = DetachedCriteria.forClass(Cat.class)	.setProjection( Property.forName("weight") );session.createCriteria(Cat.class)	.add( Subqueries.geAll("weight", weights) )	.list();</pre><p>			&#29978;&#33267;&#30456;&#20114;&#20851;&#32852;&#30340;&#23376;&#26597;&#35810;&#20063;&#26159;&#26377;&#21487;&#33021;&#30340;&#65306;		</p><pre class="programlisting">DetachedCriteria avgWeightForSex = DetachedCriteria.forClass(Cat.class, "cat2")	.setProjection( Property.forName("weight").avg() )	.add( Property.forName("cat2.sex").eqProperty("cat.sex") );session.createCriteria(Cat.class, "cat")	.add( Property.forName("weight).gt(avgWeightForSex) )	.list();</pre></div><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="query-criteria-naturalid"></a>15.9.&nbsp;&#26681;&#25454;&#33258;&#28982;&#26631;&#35782;&#26597;&#35810;(Queries by natural identifier)</h2></div></div><div></div></div><p>            &#23545;&#22823;&#22810;&#25968;&#26597;&#35810;&#65292;&#21253;&#25324;&#26465;&#20214;&#26597;&#35810;&#32780;&#35328;&#65292;&#22240;&#20026;&#26597;&#35810;&#32531;&#23384;&#30340;&#22833;&#25928;(invalidation)&#21457;&#29983;&#24471;&#22826;&#39057;&#32321;&#65292;&#26597;&#35810;&#32531;&#23384;&#19981;&#26159;&#38750;&#24120;&#39640;&#25928;&#12290;&#28982;&#32780;&#65292;&#26377;&#19968;&#31181;&#29305;&#21035;&#30340;&#26597;&#35810;&#65292;&#21487;&#20197;&#36890;&#36807;&#19981;&#21464;&#30340;&#33258;&#28982;&#38190;&#20248;&#21270;&#32531;&#23384;&#30340;&#22833;&#25928;&#31639;&#27861;&#12290;&#22312;&#26576;&#20123;&#24212;&#29992;&#20013;&#65292;&#36825;&#31181;&#31867;&#22411;&#30340;&#26597;&#35810;&#27604;&#36739;&#24120;&#35265;&#12290;&#26465;&#20214;&#26597;&#35810;API&#23545;&#36825;&#31181;&#29992;&#20363;&#25552;&#20379;&#20102;&#29305;&#21035;&#35268;&#32422;&#12290;        </p><p>            &#39318;&#20808;&#65292;&#20320;&#24212;&#35813;&#23545;&#20320;&#30340;entity&#20351;&#29992;<tt class="literal">&lt;natural-id&gt;</tt>&#26469;&#26144;&#23556;&#33258;&#28982;&#38190;&#65292;&#28982;&#21518;&#25171;&#24320;&#31532;&#20108;&#32423;&#32531;&#23384;&#12290;        </p><pre class="programlisting">&lt;class name="User"&gt;    &lt;cache usage="read-write"/&gt;    &lt;id name="id"&gt;        &lt;generator class="increment"/&gt;    &lt;/id&gt;    &lt;natural-id&gt;        &lt;property name="name"/&gt;        &lt;property name="org"/&gt;    &lt;/natural-id&gt;    &lt;property name="password"/&gt;&lt;/class&gt;</pre><p>            &#27880;&#24847;,&#27492;&#21151;&#33021;&#23545;&#20855;&#26377;<span class="emphasis"><em>mutable</em></span>&#33258;&#28982;&#38190;&#30340;entity&#24182;&#19981;&#36866;&#29992;&#12290;        </p><p>            &#28982;&#21518;&#65292;&#25171;&#24320;Hibernate &#26597;&#35810;&#32531;&#23384;&#12290;        </p><p>            &#29616;&#22312;&#65292;&#25105;&#20204;&#21487;&#20197;&#29992;<tt class="literal">Restrictions.naturalId()</tt>&#26469;&#20351;&#29992;&#26356;&#21152;&#39640;&#25928;&#30340;&#32531;&#23384;&#31639;&#27861;&#12290;        </p><pre class="programlisting">session.createCriteria(User.class)    .add( Restrictions.naturalId()        .set("name", "gavin")        .set("org", "hb")     ).setCacheable(true)    .uniqueResult();</pre></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="queryhql.html">&#19978;&#19968;&#39029;</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="index.html">&#19978;&#19968;&#32423;</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="querysql.html">&#19979;&#19968;&#39029;</a></td></tr><tr><td width="40%" align="left" valign="top">&#31532;&nbsp;14&nbsp;&#31456;&nbsp;HQL: Hibernate&#26597;&#35810;&#35821;&#35328;&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">&#36215;&#22987;&#39029;</a></td><td width="40%" align="right" valign="top">&nbsp;&#31532;&nbsp;16&nbsp;&#31456;&nbsp;Native SQL&#26597;&#35810;</td></tr></table></div></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -