![](/img/trans.png)
[英]How to map a collection of entities, inside an entity, using Hibernate?
[英]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.