计数休眠和命名查询

Ilk*_*kar 1 java hibernate

我想使用NamedQueries计数表中的元素。

NamedQuery是:

@NamedQuery(name = Advertisement.countBySubcategoryList, query = "select count(*) from  Advertisement where subcategoryId IN (:subcategoryId)")
Run Code Online (Sandbox Code Playgroud)

和:

public static final String countBySubcategoryList = "Advertisement.countBySubcategoryList";
Run Code Online (Sandbox Code Playgroud)

在模型中,我使用:

List<Advertisement> advertisements = session.getNamedQuery(Advertisement.countBySubcategoryList)
            .setParameterList("subcategoryId", subcategoryIds)
            .list();
Run Code Online (Sandbox Code Playgroud)

如何从查询中获取计数值?

Pre*_*ric 5

您的查询应类似于

select count(a) from Advertisement a where a.subcategoryId IN (:subcategoryId)
Run Code Online (Sandbox Code Playgroud)

你应该这样称呼它

Long count = (Long)session.getNamedQuery(Advertisement.countBySubcategoryList)
            .setParameterList("subcategoryId", subcategoryIds)
            .uniqueResult();
Run Code Online (Sandbox Code Playgroud)

编辑

返回4之前的Hibernate版本,Integer而不是Long针对这种类型的查询。