我必须编写一个方法,例如public List<Integer> findIds(String someVendor)
,它只获取与给定属性值匹配的实体的ID(例如,供应商)。
鉴于此示例
public class Product{
private int id;
private String vendor;
}
我可以轻松编写限制条件以匹配供应商。
但我不知道Criteria.list()
可能会如何返回Integer
return session.createCriteria(Producrt.class)
.add(Restrictions.eq("vendor",someVendor)
//What here?
.list();
另外,如果我使用C#/ LINQ,我会写下面的
return (from products product where product.vendor == someVendor select id).ToList();
我从未在Hibernate / Java中使用过投影。如何仅将匹配实体的ID返回到列表中?
答案 0 :(得分:3)
尝试以下代码,
sessionFactory.getCurrentSession().createCriteria(Product.class).add(
Restrictions.eq("vendor", "vendor-value")).setProjection(Projections.property("id"))