繁体   English   中英

如何在不返回根实体的情况下返回休眠集合实体

[英]How to return hibernate collection entities without returning root entity

我想从Hibernate获取一组对象(WorkbookConfig)的集合(Set <SheetConfig>)的元素,而无需获取主要对象(WorkbookConfig)。

基础表如下所示:

workbook_config-> workbook_config_sheet_join <-sheet_config

如果仅在SQL实用程序中运行它,则成功的SQL语句如下所示:

SELECT DISTINCT sheet_config_id FROM sheet_config AS sc 
    LEFT JOIN workbook_config_sheet_join AS wcsj 
       ON sc.sheet_config_id = wcsj.sheet_config_id
    LEFT JOIN workbook_config AS wc 
       ON wc.workbook_config_id = wcsj.workbook_config_id
WHERE wc.group_id ="1"
ORDER BY sheet_name;

我想在不使用HQL的情况下正确执行此操作。

我的不成功尝试导致了以下结果:

@SuppressWarnings("unchecked")
public List<SheetConfig> findAllForUser() {

    List<SheetConfig> sheetConfigs = null;
    Session session = getSession();

    Criteria crit = session.createCriteria(WorkbookConfig.class)
            .add(Restrictions.in(GROUP, getGroupsForUser()))
            .setFetchMode(SHEET_CONFIGS, FetchMode.JOIN);

    sheetConfigs = (List<SheetConfig>) crit.list();

    return sheetConfigs;
}

这仍然给了我WorkbookConfigs,但是我想通过一次操作就是get SheetConfigs。 我花了整整一天的时间在Internet上寻找关于Hibernate API的连贯解释,但我还找不到我认为可以解决的一个相当普遍的要求。 我总是可以退缩,只用Java完成大部分工作,但似乎我应该可以使用Hibernate API来完成此工作。 感谢您的帮助,此外,如果您可以推荐参考说明,不仅可以解释查询集合,还可以返回它们,我将不胜感激。

您是否研究了Criteria的setProjection方法? 使用setProjection方法可让您从执行的查询中选择属性或对象。

休眠标准文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM