<?xml version="1.0" encoding="UTF-8"?>
<page xmlns="http://api.springnote.com">
  <identifier type="integer">642704</identifier>
  <title>NativeSQLOrder</title>
  <relation_is_part_of type="integer">427395</relation_is_part_of>
  <date_modified type="datetime">2007-12-11T12:14:29Z</date_modified>
  <uri>http://kwon37xi.springnote.com/pages/642704</uri>
  <date_created type="datetime">2007-12-11T12:07:10Z</date_created>
  <source>&lt;h1&gt;Native SQL Order&lt;/h1&gt;
&lt;p&gt;Hibernate&#51032; Criteria&#50640;&#49436; Native SQL&#47196; &#46108; Order &#44396;&#47928;&#51012; &#49324;&#50857;&#54616;&#44256;&#51088; &#54624; &#46412;, &#50500;&#47000;&#51032; Order&#51032; &#49436;&#48652;&#53364;&#47000;&#49828;&#47484; &#49324;&#50857;&#54616;&#47732;&#46108;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&#50896;&#47000; &#53076;&#46300;&#45716; &lt;a href="http://lists.jboss.org/pipermail/hibernate-issues/2007-August/006747.html" title="http://lists.jboss.org/pipermail/hibernate-issues/2007-August/006747.html" class="external"&gt;http://lists.jboss.org/pipermail/hibernate-issues/2007-August/006747.html&lt;/a&gt; &#50640;&#49436; &#44032;&#51256;&#50728; &#44163;&#51064;&#45936;, &#50896;&#47000; &#53076;&#46300;&#47484; &#51328; &#45908; &#44628;&#45140;&#54644;&#48372;&#51060;&#44172; &#54664;&#44256;, desc(), asc() &#47700;&#49548;&#46300;&#47484; &#52628;&#44032;&#54644; &#46160;&#50632;&#45796;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ol class="code"&gt;
&lt;li&gt;import org.hibernate.Criteria;&lt;br /&gt;
import org.hibernate.HibernateException;&lt;br /&gt;
import org.hibernate.criterion.CriteriaQuery;&lt;br /&gt;
import org.hibernate.criterion.Order;&lt;br /&gt;
import org.hibernate.util.StringHelper;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;* Hibernate Native SQL &#51648;&#50896; Order &#53364;&#47000;&#49828;&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* &lt;strong&gt;criteria.addOrder(NativeSQLOrder.desc("{alias}.itemCount + {alias}.commentCount"))&lt;/strong&gt; &#50752; &#44057;&#51008; &#54805;&#53468;&#47196;&lt;br /&gt;
&amp;nbsp;* &#49324;&#50857;&#54616;&#47728; {alias}&#45716; Criteria&#50640;&#49436; &#44050;&#51012; &#44032;&#51256;&#50724;&#45716; &#53364;&#47000;&#49828;&#51032; &#53580;&#51060;&#48660; alias&#47196; &#51088;&#46041; &#48320;&#44221;&#46108;&#45796;.&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
public class NativeSQLOrder extends Order {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final long serialVersionUID = 1L;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /** &#50612;&#52264;&#54588; &#50424;&#45936; &#50630;&#45716; &#44050;&#51060;&#45796;. */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final static String USELESS_PROPERTY_NAME = "uselessAnyways";&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /** asc &#50668;&#48512; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private boolean ascending;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /** order by &#51208;&#50640; &#46308;&#50612;&#44040; Native SQL */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private String nativeSql;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected NativeSQLOrder(String nativeSql, boolean ascending) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; super(USELESS_PROPERTY_NAME, ascending);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.nativeSql = nativeSql;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.ascending = ascending;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; throws HibernateException {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder fragment = new StringBuilder();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fragment.append("(");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fragment.append(nativeSql);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fragment.append(")");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fragment.append(ascending ? " asc" : " desc");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return StringHelper.replace(fragment.toString(), "{alias}",&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; criteriaQuery.getSQLAlias(criteria));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static Order asc(String sql) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return new NativeSQLOrder(sql, true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static Order desc(String sql) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return new NativeSQLOrder(sql, false);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</source>
  <rights nil="true"></rights>
  <creator>http://kwon37xi.myid.net/</creator>
  <contributor_modified>http://kwon37xi.myid.net/</contributor_modified>
  <version type="integer">10</version>
  <tags>hibernate,native,sql</tags>
</page>
