首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用条件而不是原生查询

使用条件而不是原生查询
EN

Stack Overflow用户
提问于 2016-05-19 17:53:42
回答 2查看 55关注 0票数 0

我有下面的hibernate原生查询,如下所示,想法是不使用原生查询而切换到hibernate criteria api

代码语言:javascript
复制
 <![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 = ?]]>

我从如下所示的方法中调用它,现在我的查询是,除了使用原生查询,我还可以使用条件来实现相同的结果

代码语言:javascript
复制
 public int findAttachementsCount(long id)
    {   
        Query query = session.getNamedQuery("attachmentQuery");
        query.setParameter(0, id);
        int attachCount = query.list().size(); 
        return attachCount;
    }   

朋友们,请对此提出建议。有没有人能优先考虑一下这件事…!!

EN

回答 2

Stack Overflow用户

发布于 2016-05-20 01:17:20

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-05-20 04:30:41

代码语言:javascript
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37319736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档