【问题标题】:Getting only the entity IDs in a Criteria query仅获取 Criteria 查询中的实体 ID
【发布时间】:2013-06-17 10:17:53
【问题描述】:

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

【问题讨论】:

    标签: java hibernate criteria


    【解决方案1】:

    试试下面的代码,

    sessionFactory.getCurrentSession().createCriteria(Product.class).add(
                Restrictions.eq("vendor", "vendor-value")).setProjection(Projections.property("id"))
    

    【讨论】:

    • AFAIK 它应该返回 List。我要在半小时内调试它
    • 不,那行得通。我已成功从该查询中获得 List !!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 2022-09-23
    • 2018-04-28
    • 2021-02-09
    • 2020-04-26
    • 1970-01-01
    相关资源
    最近更新 更多