2013-11-14 4 views
0

Я написал следующее query.Не получается получить результат из запроса

select 
    count (distinct asset.assetId) 
from 
    Asset asset 
    left join asset.assetTitles title 
    left join asset.distTypes distTypes 
where 
    title.program.id in (:progIdParam) 
    and distTypes in (:lkpDistTypeId) 
    and asset.active = 1 
    and asset.isShow = 1 
    and asset.classification = 'Internal Use' 

Я называю это с помощью:

private Long assetTitleListForIp = 0L; 

assetTitleListForIp = (Long)entityManager 
     .createQuery(query)         
     .setParameter("progIdParam",progId) 
     .setParameter("lkpDistTypeId",LookupValueEnum.DIST_TYPE_INTL_PRODUCTION.getLkpId()) 
     .getSingleResult(); 

Если взять запрос Обжиг в консоли Eclipse и запустить его в БД, она показывает количество как 1. Но в применении, для assetTitleListForIp его назначения значение равно нулю. Я не ошибаюсь. Может ли кто-нибудь помочь в этом, пожалуйста?

ответ

0

Похожые assetTitleListForIp is field. Я подозреваю, что ваша проблема не имеет никакого отношения к самому запросу. Возможные вопросы:

  • запрос запустить все, и все, что вы видите, это начальное значение assetTitleListForIp
  • assetTitleListForIp маскируются локальным переменным в методе делает запрос
  • вы читаете поле assetTitleListForIp из другого экземпляра объекта, содержащего это поле.
0

Возможно, у вас есть проблема с литьем. getSingleResult() напрямую не относится к Long. Попробуйте получить результат следующим образом:

Object countObj=entityManager.createQuery(
       "select count (distinct asset.assetId) from Asset asset left join "+ 
       "asset.assetTitles title left join asset.distTypes distTypes where "+ 
       "title.program.id in (:progIdParam) and distTypes in (:lkpDistTypeId) "+ 
       "and asset.active =1 and asset.isShow = 1 and asset.classification "+ 
       "='Internal Use'") 
       .setParameter("progIdParam",progId) 
       .setParameter("lkpDistTypeId", 
       LookupValueEnum.DIST_TYPE_INTL_PRODUCTION.getLkpId()) 
       .getSingleResult(); 

Long count=Long.valueOf(""+countObj); 
assetTitleListForIp=count; 
+0

Он также не работает Masud – Sanjay

Смежные вопросы