【问题标题】:avoiding multiple selects when using kew word "new" in hql在 hql 中使用关键字“new”时避免多选
【发布时间】:2013-01-27 15:55:10
【问题描述】:

我在 java 中有以下代码。

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 表中数据库中的行数相同。如果有人知道如何解决这个问题,请告诉我。如果解决方案不需要更改我的“NamedQuery”,那就太好了,如果我只需要更改我的查询创建,那就太好了,但是任何解决方案都会有所帮助,谢谢

【问题讨论】:

  • 你说的太多行是什么意思?由于查询中没有条件,因此它将返回与 pk_user 表中的记录一样多的行。你在这里期待什么?

标签: java hibernate select hql named-query


【解决方案1】:
Multiple selects when using Key word “`new`” in `hql`


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

您的查询将returnUserHelper 相关Table 中的所有行

您应该使用 WHERE 子句来获取所需的行。

前:

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

【讨论】:

  • 谢谢回复,但是我想我解释不清楚,bug是hibernate在java控制台中执行和写入相同的select多次,我认为hibernate执行的select次数(相同select) 是选择返回的行数..
  • 这取决于 pojo 的列表和映射,如果你看到这些查询都是不同的查询。最后它会生成一个 ResultSet。
猜你喜欢
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-12
相关资源
最近更新 更多