【发布时间】:2015-11-05 16:53:15
【问题描述】:
我在 2 个实体之间有 @OneToMany 关联(Entity1 To Entity2)。
我的 sqlQueryString 包含以下步骤:
select ent1.*, ent2.differ_field from Entity1 as ent1 left outer join Entity2 as ent2 on ent1.item_id = ent2.item_id- 添加一些子查询并将结果写入 some_field2、some_field3 等。
执行:
Query sqlQuery = getCurrentSession().createSQLQuery(sqlQueryString)
.setResultTransformer(Transformers.aliasToBean(SomeDto.class));
List list = sqlQuery.list();
和
class SomeDto {
item_id;
some_filed1;
...
differ_field;
...
}
所以结果是List<SomeDto>
以灰色突出显示的字段是相同的。
所以我想要的是
group by,例如item_id和List<Object> differFieldList将作为聚合结果。
class SomeDto {
...fields...
List<Object> differFieldList;
}
或类似Map<SomeDto, List<Object>>
我可以手动映射它,但有一个问题: 当我使用
sqlQuery.setFirstResult(offset).setMaxResults(limit)我检索limit记录数。但是有多余的行。合并后我的计数实际上减少了。
提前致谢!
【问题讨论】:
-
完成了所有工作,为什么不全力以赴并使用 JPA?
-
@DuncanKinnear ,我愿意。但是我在 FROM 子句中有一些子查询。当我读到 Hibernate(JPA) 不支持这样的事情
-
@InsFi,它确实支持嵌套查询。
-
@baba ,在
FROM子句中?我只知道WHERE和SELECT子句。 -
@InsFI 与 Hibernate,您可以使用 HQL,它是普通 sql 的抽象,它具有与普通 SQL 相同的功能,所以是的,您可以进行内部、外部、左右和上下颠倒加入。
标签: java sql database hibernate orm