<div id="article_content" class="article_content tracking-ad" data-mod="popu_307" data-dsm="post">
<br>
iabernate 中createQuery与createSQLQuery区别,使用经验 <br>
createQuery与createSQLQuery两者区别是: <br>
<br>
<br>
前者用的hql语句进行查询,后者可以用sql语句查询 <br>
<br>
前者以hibernate生成的Bean为对象装入list返回 <br>
<br>
后者则是以对象数组进行存储 <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&width=18&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> </span></span></li><li class=""><span> <span class="keyword">public</span><span> List<Commodity> findCommodityByActyId(</span><span class="keyword">int</span><span> activityId) { </span></span></li><li class="alt"><span> String sql = <span class="string">"SELECT aa.ACTIVITYSCOPE_VALUE from activity_scope aa LEFT JOIN activity_rule ar ON aa.ACTIVITYRULE_ID = ar.ACTIVITYRULE_ID LEFT JOIN"</span><span> </span></span></li><li class=""><span> +<span class="string">" activity ac on ar.ACTIVITY_ID = ac.ACTIVITY_ID where ac.ACTIVITY_ID ="</span><span>+activityId+</span><span class="string">" and ac.status=3"</span><span>; </span></span></li><li class="alt"><span> System.out.println(sql); </span></li><li class=""><span> Query query = entityManager.createNativeQuery(sql); </span></li><li class="alt"><span> List<Integer> commoditiyIds = (List<Integer>)(query.getResultList()); </span></li><li class=""><span> List<Commodity> commodities = <span class="keyword">new</span><span> ArrayList<Commodity>(); </span></span></li><li class="alt"><span> <span class="keyword">for</span><span>(</span><span class="keyword">int</span><span> i=</span><span class="number">0</span><span>;i<commoditiyIds.size();i++) { </span></span></li><li class=""><span> String sql2 = <span class="string">"from Commodity c where c.commodityId=:c1"</span><span>; </span></span></li><li class="alt"><span> Query query2 = entityManager.createQuery(sql2); </span></li><li class=""><span> query2.setParameter(<span class="string">"c1"</span><span>, commoditiyIds.get(i)); </span></span></li><li class="alt"><span> Commodity c = (Commodity) query2.getResultList().get(<span class="number">0</span><span>); </span></span></li><li class=""><span> commodities.add(c); </span></li><li class="alt"><span> } </span></li><li class=""><span> <span class="keyword">return</span><span> commodities; </span></span></li><li class="alt"><span> } </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<Commodity> 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<Integer> commoditiyIds = (List<Integer>)(query.getResultList());
List<Commodity> commodities = new ArrayList<Commodity>();
for(int i=0;i<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>
<br>
iabernate 中createQuery与createSQLQuery区别,使用经验 <br>
createQuery与createSQLQuery两者区别是: <br>
<br>
<br>
前者用的hql语句进行查询,后者可以用sql语句查询 <br>
<br>
前者以hibernate生成的Bean为对象装入list返回 <br>
<br>
后者则是以对象数组进行存储 <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&width=18&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> </span></span></li><li class=""><span> <span class="keyword">public</span><span> List<Commodity> findCommodityByActyId(</span><span class="keyword">int</span><span> activityId) { </span></span></li><li class="alt"><span> String sql = <span class="string">"SELECT aa.ACTIVITYSCOPE_VALUE from activity_scope aa LEFT JOIN activity_rule ar ON aa.ACTIVITYRULE_ID = ar.ACTIVITYRULE_ID LEFT JOIN"</span><span> </span></span></li><li class=""><span> +<span class="string">" activity ac on ar.ACTIVITY_ID = ac.ACTIVITY_ID where ac.ACTIVITY_ID ="</span><span>+activityId+</span><span class="string">" and ac.status=3"</span><span>; </span></span></li><li class="alt"><span> System.out.println(sql); </span></li><li class=""><span> Query query = entityManager.createNativeQuery(sql); </span></li><li class="alt"><span> List<Integer> commoditiyIds = (List<Integer>)(query.getResultList()); </span></li><li class=""><span> List<Commodity> commodities = <span class="keyword">new</span><span> ArrayList<Commodity>(); </span></span></li><li class="alt"><span> <span class="keyword">for</span><span>(</span><span class="keyword">int</span><span> i=</span><span class="number">0</span><span>;i<commoditiyIds.size();i++) { </span></span></li><li class=""><span> String sql2 = <span class="string">"from Commodity c where c.commodityId=:c1"</span><span>; </span></span></li><li class="alt"><span> Query query2 = entityManager.createQuery(sql2); </span></li><li class=""><span> query2.setParameter(<span class="string">"c1"</span><span>, commoditiyIds.get(i)); </span></span></li><li class="alt"><span> Commodity c = (Commodity) query2.getResultList().get(<span class="number">0</span><span>); </span></span></li><li class=""><span> commodities.add(c); </span></li><li class="alt"><span> } </span></li><li class=""><span> <span class="keyword">return</span><span> commodities; </span></span></li><li class="alt"><span> } </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<Commodity> 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<Integer> commoditiyIds = (List<Integer>)(query.getResultList());
List<Commodity> commodities = new ArrayList<Commodity>();
for(int i=0;i<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>