3
在hibernate Criteria規範中,如果我想在表中分組屬性,我必須使用Projections.groupProperty。問題是我無法選擇表中的所有字段。休眠選擇所有預測組
我想做什麼是:
SELECT * FROM實體GROUP BY場
如果我在休眠條件中使用組,那麼groupProperty必須是存在的,而SQL結果將是: SELECT場FROM實體GROUP BY字段。
有什麼辦法得到我想要的?我在CriteriaJoinWalker的hibernate代碼中看到,當我想選擇全部(select *)時,代碼已經指定是否有投影。我的假設,如果我想改變行爲,我必須改變CriteriaJoinWalker代碼。我可以修改代碼,也許我可以得到我想要的結果,但如果可以的話,我不希望覆蓋我的項目的hibernate核心代碼。有沒有辦法直接改變它,而不用改變休眠代碼?
// CriteriaJoinWalker
if(translator.hasProjection())
{
resultTypes = translator.getProjectedTypes();
initProjection(translator.getSelect(), translator.getWhereCondition(), translator.getOrderBy(), translator.getGroupBy(), LockMode.NONE);
} else
{
resultTypes = (new Type[] {
TypeFactory.manyToOne(persister.getEntityName())
});
initAll(translator.getWhereCondition(), translator.getOrderBy(), LockMode.NONE);
}
感謝
是的,我知道......正如我之前所說的。似乎沒有辦法從Projections中獲取實體。 – Jef