![](/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.