欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Hibernate中union如何使用

Hibernate中union如何使用,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

西青ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!

原來(lái)代碼

String countHql2 = "select count(distinct p) from Project as p,CommentSimple as c,ProjectBookmark as b where (" + "c.owner.id=? and p.id=c.targetId and c.targetType=500) or (b.user.id=? and p.id=b.project.id)";      String hql2 = "select distinct p from Project as p,CommentSimple as c,ProjectBookmark as b where ( "+ "c.owner.id=? and p.id=c.targetId and c.targetType=500) or (b.user.id=? and p.id=b.project.id)";

主要是找出某個(gè)人所有評(píng)論過(guò)或收藏過(guò)的項(xiàng)目。簡(jiǎn)單表結(jié)構(gòu)如下:

project:id owner_id(用戶id)保存項(xiàng)目的基本信息

project_bookmark:uid(用戶id),project_id(收藏的項(xiàng)目的id),owner_id(收藏者的id)

comment_simple:target_type(保存對(duì)某種對(duì)象的評(píng)論,值為500時(shí)表示的對(duì)項(xiàng)目的評(píng)論),target_id(保存對(duì)某種對(duì)象的評(píng)論,值為該對(duì)象的id),project_id(項(xiàng)目的id),owner_id(評(píng)論者的id)

由于這個(gè)sql執(zhí)行時(shí)所建的索引無(wú)法使用,而且還造成了三個(gè)表連接會(huì)有大量的無(wú)效的查詢以及重復(fù)結(jié)果,***還得要distinct可以想象執(zhí)行的效率。

只好改用union來(lái)重寫,需要用到hibernate的native  sql,經(jīng)過(guò)努力終于找到可以用union找出整個(gè)對(duì)象以及在配置文件中與該對(duì)象有關(guān)系的對(duì)象的方法。

與其說(shuō)是找出來(lái)的,不如說(shuō)是試出來(lái)的,代碼如下:

union

String sql1 = "SELECT COUNT(*) FROM(SELECT p.id FROM project p,comment_simple c WHERE p.id=c.target_id AND c.target_type=500 AND c.uid=" + userId + " UNION SELECT pr.id FROM project pr,project_bookmark b WHERE pr.id=b.project_id AND b.uid=" + userId + ") AS temp"; String sql2 = "(SELECT {p.*} FROM project p,comment_simple c WHERE p.id=c.target_id AND c.target_type=500 AND c.uid=" + userId + ")" + "UNION" + "(SELECT {p.*} FROM project p,project_bookmark b WHERE p.id=b.project_id AND b.uid=" + userId + ")LIMIT " + (pageIndex - 1) * maxPerPage + "," + maxPerPage; SQLQuery query = this.getSession().createSQLQuery(sql1); Integercount=Integer.valueOf(((BigInteger)query.uniqueResult()).toString()); SQLQuery query2 = this.getSession().createSQLQuery(sql2); query2.addEntity("p", Project.class); List<Project> list = query2.list();

sql1符合條件的項(xiàng)目的總數(shù)。sql2求出符合條件項(xiàng)目的某一頁(yè)。

要注意的是:sql2中{p.*}要寫成一樣的。

簡(jiǎn)而言之:select {a.*} from A a where ... union select {a.*} from A a where...

如果還要排序的話sql2換成sql3:

需要order by時(shí)

String sql3 = "(SELECT {p.*},p.created FROM project_hz p,comment_simple c WHERE p.id=c.target_id AND c.target_type=500 AND c.uid=" + userId + ")" + "UNION" + "(SELECT {p.*} ,p.created FROM project_hz p,project_bookmark b WHERE p.id=b.project_id AND b.uid=" + userId + ") ORDER BY created LIMIT " + (pageIndex - 1) * maxPerPage + "," + maxPerPage;

看完上述內(nèi)容,你們掌握Hibernate中union如何使用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)頁(yè)題目:Hibernate中union如何使用
文章鏈接:http://aaarwkj.com/article34/gdchse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)、全網(wǎng)營(yíng)銷推廣、網(wǎng)站導(dǎo)航動(dòng)態(tài)網(wǎng)站、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
国产一区二区三区av| 91福利免费在线看| 亚洲综合一区国产精品| 亚洲综合美女极品啪啪啪| 人妻日韩字幕一区二区| 成年黄网站免费视频大全| 日产极品一区二区三区| 国产婷婷成人久久av免费高清| 热久久这里只有精品网址| 日韩黄色资源在线观看| 福利1中文字幕手机在线| 亚洲成人永久免费精品| 和富婆啪啪一区二区免费看 | 夫妻性生活视频在线免费看| 91这里只有精品在线观看| 成人欧美精品一区二区不卡| 日韩av一区二区三区在线| 97视频在线中文字幕| 亚洲欧美日韩精品麻豆| 国产一区二区日韩一区| 免费无码不卡av一区二区| 亚洲欧美成人自偷自拍一区| 亚洲欧美国产成人在线| 精品国产综合一区二区三区| 秋霞日韩欧美一区二区三区| 免费毛片一区二区三区| 亚洲小视频免费在线观看| 成人免费大片在线观看视频| 国产三级精品三线在线观看| 日韩人妖视频在线观看| 精品久久人人做爽综合| 色呦呦视频在线免费观看| 国产亚洲中文字幕无线乱码 | 欧美日韩国产精品乱人伦| 欧美黄色一区二区三区视频| 日本中文一区在线观看| 欧美日韩国产免费电影| 国产成av人片乱码色午夜| 欧美精品成人在线一区| 一欧美一区二区三区| 99久久免费中文字幕|