如何使用 Hibernate 选择列?

Posted

技术标签:

【中文标题】如何使用 Hibernate 选择列?【英文标题】:How do you select a column using Hibernate? 【发布时间】:2012-05-26 00:17:14 【问题描述】:

我想使用 Hibernate 选择单个列而不是整个对象。到目前为止,我有这个:

 List<String> firstname = null;

 firstname = getSession().createCriteria(People.class).list();

我的问题是上面的代码将整个 People 表作为对象返回,而不仅仅是“名字”。我不确定如何指定只返回“名字”而不是整个对象。

【问题讨论】:

【参考方案1】:

如果你想要条件基础投影,你可以使用 ProjectionList 例如

  ProjectionList prjection = Projections.projectionList();
if(abc)
    prjection.add(Projections.property("firstname"));

else if(xyz)
    prjection.add(Projections.property("lastname"));


    ........

    criteria.setProjection(prjection);

【讨论】:

【参考方案2】:

如果您需要查询 2 列或更多列并从查询中获取值,可以这样做:

....
crit.setProjection(Projections.property("firstname"));
crit.setProjection(Projections.property("lastname"));

List result = crit.list();

...

for (Iterator it = result.iterator(); it.hasNext(); ) 
    Object[] myResult = (Object[]) it.next();
    String firstname = (String) myResult[0];
    String lastname = (String) myResult[1];

    ....

【讨论】:

【参考方案3】:

你可以像这样设置投影:

.setProjection(Projections.property("firstname"))

这样你只能得到名字作为回报。

我在堆栈上找到了另一个具有相同场景的链接。希望这也能帮助How to use hibernate criteria to return only one element of an object instead the entire object?

【讨论】:

以上是关于如何使用 Hibernate 选择列?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 hql 中选择连接列

如何使用 JPA+Hibernate 在 json 结果中包含连接列

如何在hibernate中使用两列作为主键

如何在 Hibernate 的条件中使用多对多关联中的索引列?

如何使用本机 SQL 在 Hibernate 中获取仅包含选定列的表实体列表?

如何使用 JPA 和 Hibernate 将 MySQL JSON 列映射到 Java 实体属性