2016-05-19 9 views
0

代わりにネイティブクエリの基準を使用すると、ネイティブクエリを使用して示したように、私はメソッドから呼び出しています考え方の下に示すように、私は以下のネイティブクエリを休止している

<![CDATA[select count(iilnmp.INV_LINE_NOTE_ID) from IOA_INV_LINE_NOTE_MAP iilnmp , 
                IOA_INVOICE_LINE_NOTES iiln , IOA_INVOICE_LINE iil 
                where iilnmp.INV_LINE_NOTE_ID = iiln.ID and iiln.INLI_ID =iil.id and iil.ID = ?]]> 

基準APIを休止状態に切り替えることではありません私のクエリは、ネイティブクエリを使用する代わりに、同じ結果を得るために基準を使用することもできます。

public int findAttachementsCount(long id) 
    { 
     Query query = session.getNamedQuery("attachmentQuery"); 
     query.setParameter(0, id); 
     int attachCount = query.list().size(); 
     return attachCount; 
    } 

皆さんにお勧めします。誰かがこれを優先して見てください。

答えて

0
public int findAttachementsCount(long id) 
    Criteria c = session.createCriteria(YourClass.class, "alias"); 
    c.createAlias("fieldOfyoursecondClass.role", "role"); // inner join by default 
    c.setProjection(Projections.rowCount()) 
    c.add(Restrictions.eq("alias.id", id)); 
return ((Long)c.uniqueResult()).getIntValue(); 

Original question - Joins | Original question - Source - Count

+0

おかげで、私は参加するが、3つのテーブルの間にあるため、別名文2が作成されなければならないと思い –

+0

はい、ちょうどあなたが罰金されているクエリに追加します。 – pedroct92

0
Criteria c = session.createCriteria(IOA_INV_LINE_NOTE_MAP.class, "iilnmp"); 
c.createAlias("iilnmp.INV_LINE_NOTE_ID", "iiln"); 
c.createAlias("iiln.INLI_ID", "iil"); 

// restrictions 
c.add(Restrictions.eq("iil.ID", id)); 

// projections 
c.setProjections(Projections.count("iilnmp.INV_LINE_NOTE_ID")); 

// run query 
c.uniqueResult(); 
関連する問題