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 コンソールで発行されたクエリを取得して DB で実行すると、カウントが 1 と表示されます。ただし、アプリケーションでは、assetTitleListForIp の値がゼロとして割り当てられます。私は自分が犯した小さな間違いを犯していません。誰でもこれについて助けてもらえますか?

4

2 に答える 2

0

フィールドのようassetTitleListForIpです。あなたの問題はクエリ自体とは何の関係もないと思います。考えられる問題:

  • クエリはすべて実行され、表示されるのはの初期値だけですassetTitleListForIp
  • assetTitleListForIpクエリを実行するメソッドのローカル変数によってマスクされている
  • assetTitleListForIpそのフィールドを保持しているオブジェクトの他のインスタンスからフィールドを読み取っています。
于 2013-11-14T08:41:50.727 に答える