5

我必须编写一个诸如 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 返回到列表中?

4

1 回答 1

7

试试下面的代码,

sessionFactory.getCurrentSession().createCriteria(Product.class).add(
            Restrictions.eq("vendor", "vendor-value")).setProjection(Projections.property("id"))
于 2013-06-17T10:26:04.507 回答