createQuery 與 createNativeQuery 區別

<div id="article_content" class="article_content tracking-ad" data-mod="popu_307" data-dsm="post">


<br>
iabernate&nbsp;中createQuery與createSQLQuery區別,使用經驗&nbsp;<br>
createQuery與createSQLQuery兩者區別是:&nbsp;<br>
<br>
<br>
前者用的hql語句進行查詢,後者可以用sql語句查詢&nbsp;<br>
<br>
前者以hibernate生成的Bean爲對象裝入list返回&nbsp;<br>
<br>
後者則是以對象數組進行存儲&nbsp;<br>
<br>
<p>所以使用createSQLQuery有時候也想以<a href="http://lib.csdn.net/base/javaee" class="replace_word" title="Java EE知識庫" target="_blank" style="color:#df3434; font-weight:bold;">hibernate</a>生成的Bean爲對象裝入list返回</p>
<p>如下示例:</p>
<p><br>
</p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" οnclick="dp.sh.Toolbar.Command('ViewSource',this);return false;" target="_blank">view plain</a><span data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" οnclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;" target="_blank">copy</a><div style="position: absolute; left: 563px; top: 901px; width: 18px; height: 18px; z-index: 99;"><embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="18" height="18" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&amp;width=18&amp;height=18" wmode="transparent"></div></span><span data-mod="popu_169"> <a href="#" class="PrintSource" title="print" οnclick="dp.sh.Toolbar.Command('PrintSource',this);return false;" target="_blank">print</a></span><a href="#" class="About" title="?" οnclick="dp.sh.Toolbar.Command('About',this);return false;" target="_blank">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="annotation">@Override</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">public</span><span>&nbsp;List&lt;Commodity&gt;&nbsp;findCommodityByActyId(</span><span class="keyword">int</span><span>&nbsp;activityId)&nbsp;{&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sql&nbsp;=&nbsp;<span class="string">"SELECT&nbsp;aa.ACTIVITYSCOPE_VALUE&nbsp;from&nbsp;activity_scope&nbsp;aa&nbsp;LEFT&nbsp;JOIN&nbsp;activity_rule&nbsp;ar&nbsp;ON&nbsp;aa.ACTIVITYRULE_ID&nbsp;=&nbsp;ar.ACTIVITYRULE_ID&nbsp;LEFT&nbsp;JOIN"</span><span>&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+<span class="string">"&nbsp;activity&nbsp;ac&nbsp;on&nbsp;ar.ACTIVITY_ID&nbsp;=&nbsp;ac.ACTIVITY_ID&nbsp;where&nbsp;ac.ACTIVITY_ID&nbsp;="</span><span>+activityId+</span><span class="string">"&nbsp;and&nbsp;ac.status=3"</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(sql);&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query&nbsp;query&nbsp;=&nbsp;entityManager.createNativeQuery(sql);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Integer&gt;&nbsp;commoditiyIds&nbsp;=&nbsp;(List&lt;Integer&gt;)(query.getResultList());&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&lt;Commodity&gt;&nbsp;commodities&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;ArrayList&lt;Commodity&gt;();&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">for</span><span>(</span><span class="keyword">int</span><span>&nbsp;i=</span><span class="number">0</span><span>;i&lt;commoditiyIds.size();i++)&nbsp;{&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sql2&nbsp;=&nbsp;<span class="string">"from&nbsp;Commodity&nbsp;c&nbsp;where&nbsp;c.commodityId=:c1"</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Query&nbsp;query2&nbsp;=&nbsp;entityManager.createQuery(sql2);&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;query2.setParameter(<span class="string">"c1"</span><span>,&nbsp;commoditiyIds.get(i));&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Commodity&nbsp;c&nbsp;=&nbsp;(Commodity)&nbsp;query2.getResultList().get(<span class="number">0</span><span>);&nbsp;&nbsp;</span></span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;commodities.add(c);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li class=""><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">return</span><span>&nbsp;commodities;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li></ol></div><pre code_snippet_id="356179" snippet_file_name="blog_20140521_1_3207184" name="code" class="java" style="display: none;">@Override
public List&lt;Commodity&gt; findCommodityByActyId(int activityId) {
String sql = "SELECT aa.ACTIVITYSCOPE_VALUE from activity_scope aa LEFT JOIN activity_rule ar ON aa.ACTIVITYRULE_ID = ar.ACTIVITYRULE_ID LEFT JOIN"
+" activity ac on ar.ACTIVITY_ID = ac.ACTIVITY_ID where ac.ACTIVITY_ID ="+activityId+" and ac.status=3";
System.out.println(sql);
Query query = entityManager.createNativeQuery(sql);
List&lt;Integer&gt; commoditiyIds = (List&lt;Integer&gt;)(query.getResultList());
List&lt;Commodity&gt; commodities = new ArrayList&lt;Commodity&gt;();
for(int i=0;i&lt;commoditiyIds.size();i++) {
String sql2 = "from Commodity c where c.commodityId=:c1";
Query query2 = entityManager.createQuery(sql2);
query2.setParameter("c1", commoditiyIds.get(i));
Commodity c = (Commodity) query2.getResultList().get(0);
commodities.add(c);
}
return commodities;
}</pre><br>
<br>
<br>
<p></p>
   
</div>
發佈了10 篇原創文章 · 獲贊 11 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章