2013-02-12 122 views
0

我在java中有以下代碼。
在hql中使用kew字「新」時避免多重選擇

List<UserHelper> users=List<UserHelper>)session.getNamedQuery("PkUser.loadHelperUsers").list();

我覺得沒關係了「UserHelper」類是什麼,這就是爲什麼我不寫,不超載我的問題。這是我上面提到的namedQuery。

@NamedQuery(name = "PkUser.loadHelperUsers", query = "SELECT new ge.tec.pto.ext.helpers.UserHelper(u) from PkUser u order by u.pkUserId desc"), 

的問題是,HQL選擇太多行,我覺得同樣的數字,是在數據庫中pk_user table.If有人知道如何解決這個問題,請告知我行。這將是非常好的,如果該解決方案將不需要改變我的「NamedQuery」,將graet如果我將只改變我的查詢創作,但是,任何解決方案會有所幫助,謝謝

+0

你所說的**行太多,意味着**?由於查詢中沒有條件,它將返回與pk_user表中的記錄一樣多的行。你在這裏期待什麼? – spiritwalker 2013-02-12 11:12:05

回答

0
Multiple selects when using Key word 「`new`」 in `hql` 


There is no problem with your code and with NEW keyword . 

你查詢將return所有的行在UserHelper相關Table

您應該使用WHERE子句來獲取所需的行。

EX:

query = "SELECT new ge.tec.pto.ext.helpers.UserHelper(u) from PkUser u where username=:passedparamer order by u.pkUserId desc" 
+0

謝謝你的回覆,但我覺得我解釋不清楚,錯誤在於,hibernate執行和在java控制檯中寫入相同的選擇多次,我認爲選擇hibernate的執行次數(相同的select)是行數select返回.. – 2013-02-12 12:42:25

+0

這取決於pojo的列表和映射,如果您看到這些查詢,那麼這些查詢都是不同的查詢。最終,它將生成一個ResultSet。 – 2013-02-12 13:01:20

相關問題