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

📄 filters.html

📁 是一个中文的Hibernate库文档
💻 HTML
字号:
<html><head>      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">   <title>&#31532;&nbsp;18&nbsp;&#31456;&nbsp;&#36807;&#28388;&#25968;&#25454;</title><link rel="stylesheet" href="../shared/css/html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="HIBERNATE - &#31526;&#21512;Java&#20064;&#24815;&#30340;&#20851;&#31995;&#25968;&#25454;&#24211;&#25345;&#20037;&#21270;"><link rel="up" href="index.html" title="HIBERNATE - &#31526;&#21512;Java&#20064;&#24815;&#30340;&#20851;&#31995;&#25968;&#25454;&#24211;&#25345;&#20037;&#21270;"><link rel="previous" href="querysql.html" title="&#31532;&nbsp;17&nbsp;&#31456;&nbsp;Native SQL&#26597;&#35810;"><link rel="next" href="xml.html" title="&#31532;&nbsp;19&nbsp;&#31456;&nbsp;XML&#26144;&#23556;"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">&#31532;&nbsp;18&nbsp;&#31456;&nbsp;&#36807;&#28388;&#25968;&#25454;</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="querysql.html">&#19978;&#19968;&#39029;</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="xml.html">&#19979;&#19968;&#39029;</a></td></tr></table><hr></div><div class="chapter" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title"><a name="filters"></a>&#31532;&nbsp;18&nbsp;&#31456;&nbsp;&#36807;&#28388;&#25968;&#25454;</h2></div></div><div></div></div><p>                Hibernate3 &#25552;&#20379;&#20102;&#19968;&#31181;&#21019;&#26032;&#30340;&#26041;&#24335;&#26469;&#22788;&#29702;&#20855;&#26377;&#8220;&#26174;&#24615;(visibility)&#8221;&#35268;&#21017;&#30340;&#25968;&#25454;&#65292;&#37027;&#23601;&#26159;&#20351;&#29992;<span class="emphasis"><em>Hibernate filter</em></span>&#12290;                <span class="emphasis"><em>Hibernate filter</em></span>&#26159;&#20840;&#23616;&#26377;&#25928;&#30340;&#12289;&#20855;&#26377;&#21517;&#23383;&#12289;&#21487;&#20197;&#24102;&#21442;&#25968;&#30340;&#36807;&#28388;&#22120;&#65292;                &#23545;&#20110;&#26576;&#20010;&#29305;&#23450;&#30340;Hibernate session&#24744;&#21487;&#20197;&#36873;&#25321;&#26159;&#21542;&#21551;&#29992;&#65288;&#25110;&#31105;&#29992;&#65289;&#26576;&#20010;&#36807;&#28388;&#22120;&#12290;    </p><div class="sect1" lang="zh-cn"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="objectstate-filters"></a>18.1.&nbsp;Hibernate &#36807;&#28388;&#22120;(filters)</h2></div></div><div></div></div><p>                        Hibernate3&#26032;&#22686;&#20102;&#23545;&#26576;&#20010;&#31867;&#25110;&#32773;&#38598;&#21512;&#20351;&#29992;&#39044;&#20808;&#23450;&#20041;&#30340;&#36807;&#28388;&#22120;&#26465;&#20214;(filter criteria)&#30340;&#21151;&#33021;&#12290;&#36807;&#28388;&#22120;&#26465;&#20214;&#30456;&#24403;&#20110;&#23450;&#20041;&#19968;&#20010;                        &#38750;&#24120;&#31867;&#20284;&#20110;&#31867;&#21644;&#21508;&#31181;&#38598;&#21512;&#19978;&#30340;&#8220;where&#8221;&#23646;&#24615;&#30340;&#32422;&#26463;&#23376;&#21477;&#65292;&#20294;&#26159;&#36807;&#28388;&#22120;&#26465;&#20214;&#21487;&#20197;&#24102;&#21442;&#25968;&#12290;                        &#24212;&#29992;&#31243;&#24207;&#21487;&#20197;&#22312;&#36816;&#34892;&#26102;&#20915;&#23450;&#26159;&#21542;&#21551;&#29992;&#32473;&#23450;&#30340;&#36807;&#28388;&#22120;&#65292;&#20197;&#21450;&#20351;&#29992;&#20160;&#20040;&#26679;&#30340;&#21442;&#25968;&#20540;&#12290;                        &#36807;&#28388;&#22120;&#30340;&#29992;&#27861;&#24456;&#20687;&#25968;&#25454;&#24211;&#35270;&#22270;&#65292;&#21482;&#19981;&#36807;&#26159;&#22312;&#24212;&#29992;&#31243;&#24207;&#20013;&#30830;&#23450;&#20351;&#29992;&#20160;&#20040;&#26679;&#30340;&#21442;&#25968;&#30340;&#12290;                                </p><p>            &#35201;&#20351;&#29992;&#36807;&#28388;&#22120;&#65292;&#24517;&#39035;&#39318;&#20808;&#22312;&#30456;&#24212;&#30340;&#26144;&#23556;&#33410;&#28857;&#20013;&#23450;&#20041;&#12290;&#32780;&#23450;&#20041;&#19968;&#20010;&#36807;&#28388;&#22120;&#65292;&#35201;&#29992;&#21040;&#20301;&#20110;<tt class="literal">&lt;hibernate-mapping/&gt;</tt>			&#33410;&#28857;&#20043;&#20869;&#30340;<tt class="literal">&lt;filter-def/&gt;</tt>&#33410;&#28857;&#65306;        </p><pre class="programlisting">&lt;filter-def name="myFilter"&gt;    &lt;filter-param name="myFilterParam" type="string"/&gt;&lt;/filter-def&gt;</pre><p>			&#23450;&#20041;&#22909;&#20043;&#21518;&#65292;&#23601;&#21487;&#20197;&#22312;&#26576;&#20010;&#31867;&#20013;&#20351;&#29992;&#36825;&#20010;&#36807;&#28388;&#22120;&#65306;        </p><pre class="programlisting">&lt;class name="myClass" ...&gt;    ...    &lt;filter name="myFilter" condition=":myFilterParam = MY_FILTERED_COLUMN"/&gt;&lt;/class&gt;</pre><p>			&#20063;&#21487;&#20197;&#22312;&#26576;&#20010;&#38598;&#21512;&#20351;&#29992;&#23427;&#65306;        </p><pre class="programlisting">&lt;set ...&gt;    &lt;filter name="myFilter" condition=":myFilterParam = MY_FILTERED_COLUMN"/&gt;&lt;/set&gt;</pre><p>                        &#21487;&#20197;&#22312;&#22810;&#20010;&#31867;&#25110;&#38598;&#21512;&#20013;&#20351;&#29992;&#26576;&#20010;&#36807;&#28388;&#22120;&#65307;&#26576;&#20010;&#31867;&#25110;&#32773;&#38598;&#21512;&#20013;&#20063;&#21487;&#20197;&#20351;&#29992;&#22810;&#20010;&#36807;&#28388;&#22120;&#12290;        </p><p>			<tt class="literal">Session</tt>&#23545;&#35937;&#20013;&#20250;&#29992;&#21040;&#30340;&#26041;&#27861;&#26377;&#65306;<tt class="literal">enableFilter(String filterName)</tt>,            <tt class="literal">getEnabledFilter(String filterName)</tt>, &#21644; <tt class="literal">disableFilter(String filterName)</tt>.			Session&#20013;&#40664;&#35748;&#26159;<span class="emphasis"><em>&#19981;</em></span>&#21551;&#29992;&#36807;&#28388;&#22120;&#30340;&#65292;&#24517;&#39035;&#36890;&#36807;<tt class="literal">Session.enabledFilter()</tt>&#26041;&#27861;&#26174;&#24335;&#30340;&#21551;&#29992;&#12290;			&#35813;&#26041;&#27861;&#36820;&#22238;&#34987;&#21551;&#29992;&#30340;<tt class="literal">Filter</tt>&#30340;&#23454;&#20363;&#12290;&#20197;&#19978;&#25991;&#23450;&#20041;&#30340;&#36807;&#28388;&#22120;&#20026;&#20363;&#65306;        </p><pre class="programlisting">session.enableFilter("myFilter").setParameter("myFilterParam", "some-value");</pre><p>			&#27880;&#24847;&#65292;org.hibernate.Filter&#30340;&#26041;&#27861;&#20801;&#35768;&#38142;&#24335;&#26041;&#27861;&#35843;&#29992;&#12290;&#65288;&#31867;&#20284;&#19978;&#38754;&#20363;&#23376;&#20013;&#21551;&#29992;Filter&#20043;&#21518;&#35774;&#23450;Filter&#21442;&#25968;&#36825;&#20010;&#8220;&#26041;&#27861;&#38142;&#8221;&#65289;                        Hibernate&#30340;&#20854;&#20182;&#37096;&#20998;&#20063;&#22823;&#22810;&#26377;&#36825;&#20010;&#29305;&#24615;&#12290;        </p><p>			&#19979;&#38754;&#26159;&#19968;&#20010;&#27604;&#36739;&#23436;&#25972;&#30340;&#20363;&#23376;&#65292;&#20351;&#29992;&#20102;&#35760;&#24405;&#29983;&#25928;&#26085;&#26399;&#27169;&#24335;&#36807;&#28388;&#26377;&#26102;&#25928;&#30340;&#25968;&#25454;&#65306;        </p><pre class="programlisting">&lt;filter-def name="effectiveDate"&gt;    &lt;filter-param name="asOfDate" type="date"/&gt;&lt;/filter-def&gt;&lt;class name="Employee" ...&gt;...    &lt;many-to-one name="department" column="dept_id" class="Department"/&gt;    &lt;property name="effectiveStartDate" type="date" column="eff_start_dt"/&gt;    &lt;property name="effectiveEndDate" type="date" column="eff_end_dt"/&gt;...    &lt;!--        Note that this assumes non-terminal records have an eff_end_dt set to        a max db date for simplicity-sake		&#27880;&#24847;&#65292;&#20026;&#20102;&#31616;&#21333;&#36215;&#35265;&#65292;&#27492;&#22788;&#20551;&#35774;&#38599;&#29992;&#20851;&#31995;&#29983;&#25928;&#26399;&#23578;&#26410;&#32467;&#26463;&#30340;&#35760;&#24405;&#30340;eff_end_dt&#23383;&#27573;&#30340;&#20540;&#31561;&#20110;&#25968;&#25454;&#24211;&#26368;&#22823;&#30340;&#26085;&#26399;    --&gt;    &lt;filter name="effectiveDate"            condition=":asOfDate BETWEEN eff_start_dt and eff_end_dt"/&gt;&lt;/class&gt;&lt;class name="Department" ...&gt;...    &lt;set name="employees" lazy="true"&gt;        &lt;key column="dept_id"/&gt;        &lt;one-to-many class="Employee"/&gt;        &lt;filter name="effectiveDate"                condition=":asOfDate BETWEEN eff_start_dt and eff_end_dt"/&gt;    &lt;/set&gt;&lt;/class&gt;</pre><p>			&#23450;&#20041;&#22909;&#21518;&#65292;&#22914;&#26524;&#24819;&#35201;&#20445;&#35777;&#21462;&#22238;&#30340;&#37117;&#26159;&#30446;&#21069;&#22788;&#20110;&#29983;&#25928;&#26399;&#30340;&#35760;&#24405;&#65292;&#21482;&#38656;&#22312;&#33719;&#21462;&#38599;&#21592;&#25968;&#25454;&#30340;&#25805;&#20316;&#20043;&#21069;&#20808;&#24320;&#21551;&#36807;&#28388;&#22120;&#21363;&#21487;&#65306;        </p><pre class="programlisting">Session session = ...;session.enabledFilter("effectiveDate").setParameter("asOfDate", new Date());List results = session.createQuery("from Employee as e where e.salary &gt; :targetSalary")         .setLong("targetSalary", new Long(1000000))         .list();</pre><p>			&#22312;&#19978;&#38754;&#30340;HQL&#20013;&#65292;&#34429;&#28982;&#25105;&#20204;&#20165;&#20165;&#26174;&#24335;&#30340;&#20351;&#29992;&#20102;&#19968;&#20010;&#34218;&#27700;&#26465;&#20214;&#65292;&#20294;&#22240;&#20026;&#21551;&#29992;&#20102;&#36807;&#28388;&#22120;&#65292;&#26597;&#35810;&#23558;&#20165;&#36820;&#22238;&#37027;&#20123;&#30446;&#21069;&#38599;&#29992;			&#20851;&#31995;&#22788;&#20110;&#29983;&#25928;&#26399;&#30340;&#65292;&#24182;&#19988;&#34218;&#27700;&#39640;&#20110;&#19968;&#30334;&#19975;&#32654;&#20992;&#30340;&#38599;&#21592;&#30340;&#25968;&#25454;&#12290;        </p><p>			&#27880;&#24847;&#65306;&#22914;&#26524;&#20320;&#25171;&#31639;&#22312;&#20351;&#29992;&#22806;&#36830;&#25509;&#65288;&#25110;&#32773;&#36890;&#36807;HQL&#25110;load fetching&#65289;&#30340;&#21516;&#26102;&#20351;&#29992;&#36807;&#28388;&#22120;&#65292;&#35201;&#27880;&#24847;&#26465;&#20214;&#34920;&#36798;&#24335;&#30340;&#26041;&#21521;&#65288;&#24038;&#36824;&#26159;&#21491;&#65289;&#12290;			&#26368;&#23433;&#20840;&#30340;&#26041;&#24335;&#26159;&#20351;&#29992;&#24038;&#22806;&#36830;&#25509;&#65288;left outer joining&#65289;&#12290;&#24182;&#19988;&#36890;&#24120;&#26469;&#35828;&#65292;&#20808;&#20889;&#21442;&#25968;&#65292;			&#28982;&#21518;&#26159;&#25805;&#20316;&#31526;&#65292;&#26368;&#21518;&#20889;&#25968;&#25454;&#24211;&#23383;&#27573;&#21517;&#12290;        </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="querysql.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="xml.html">&#19979;&#19968;&#39029;</a></td></tr><tr><td width="40%" align="left" valign="top">&#31532;&nbsp;17&nbsp;&#31456;&nbsp;Native SQL&#26597;&#35810;&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;19&nbsp;&#31456;&nbsp;XML&#26144;&#23556;</td></tr></table></div></body></html>

⌨️ 快捷键说明

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