簡體   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