我有以下设置:
一个CallRegistry bean,其中包含TrunkBean,而TrunkBean包含Operator bean。
在我的标准中我添加:
criteria.createAlias("callRegistry.trunk", "trunk");
criteria.createAlias("trunk.operator", "op");
我需要在结果列表中使用GSON来填充数据表,但问题是结果列表总是在Object中返回TrunkBean,OperatorBean和CallRegistry。
。 resultadoQuery是list()之后的queryResult troncoBean是trunk,operadora是operator,rlBean是callRegistry
我可以做些什么来过滤这个并且只获得CallRegistry bean来得到结果? 这甚至可能吗?这个问题还有其他替代方案吗?
这也正在进行中(评论这两行解决了这个问题):
total = (Number) criteria.setProjection(Projections.rowCount()).uniqueResult();
criteria.setProjection(null)
为什么会这样?
答案 0 :(得分:1)
当您致电criteria.setProjection(null);
ResultTransformer
配置了PassThroughResultTransformer
时,此变换器只会返回一个array
,其中包含您声明的别名。
如果要指定查询结果将是投影(本质上是标量),则只设置条件的投影。给定投影中包含的各个组件决定了查询结果的整体“形状”。
示例,在您评论{1}}的第一行中,结果将是您的查询返回的行数,就像total = (Number) criteria.setProjection(Projections.rowCount()).uniqueResult();
一样。
有关如何使用投影的详细信息:http://docs.jboss.org/hibernate/orm/4.0/manual/en-US/html/querycriteria.html#querycriteria-projection