2013-02-12 124 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

相关问题