我有下面的hibernate原生查询,如下所示,想法是不使用原生查询而切换到hibernate criteria api
<![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 = ?]]>我从如下所示的方法中调用它,现在我的查询是,除了使用原生查询,我还可以使用条件来实现相同的结果
public int findAttachementsCount(long id)
{
Query query = session.getNamedQuery("attachmentQuery");
query.setParameter(0, id);
int attachCount = query.list().size();
return attachCount;
} 朋友们,请对此提出建议。有没有人能优先考虑一下这件事…!!
发布于 2016-05-20 01:17:20
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
发布于 2016-05-20 04:30:41
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();https://stackoverflow.com/questions/37319736
复制相似问题