1

我有一个这样的 hql 查询:

  return (long)Session.CreateQuery (" select count(*) " +
                                      "   from Files p " +
                                      "   join fetch p.Application a " +
                                      "  where a.Name = :AppName")
                        .SetParameter("AppName", application)                            
                        .UniqueResult();

Hibernate 像这样创建 sql 查询:

   select field1, field2, field3, count(*)

这就是它无法执行的原因。

为什么选择 count(*) 使休眠以列出所有字段以及如何防止它?

谢谢

4

1 回答 1

2

在我看来,问题在于使用“ FETCH”,它通常用于从数据库中获取给定实体的依赖关系。所以 Hibernate 查询 Application 的字段来创建对象。

如果您只想计算与应用程序关联的文件,请将 ' JOIN FETCH' 更改为 ' INNER JOIN'(或简单地 ' JOIN')。唯一查询的字段应该是count(*)then。

于 2013-01-18T11:40:50.453 回答