Java 休眠条件:返回与根实体不同的实体类型?

Java 休眠条件:返回与根实体不同的实体类型?,java,hibernate,criteria,Java,Hibernate,Criteria,我拥有与以下类似的实体: ProductLine: id, name ProductLineContents: content_id, product_line_id Content: id, text, updated_time select content.* from productline inner join productlinecontents inner join content; 我想做的是:对于每个产品线,获取最新的内容(因此,如果有两个内容条目与一个产品线关联,则会重

我拥有与以下类似的实体:

ProductLine: id, name
ProductLineContents: content_id, product_line_id
Content: id, text, updated_time
select content.* from productline 
inner join productlinecontents
inner join content;
我想做的是:对于每个产品线,获取最新的内容(因此,如果有两个内容条目与一个产品线关联,则会重新设置最新的更新时间,如果一个内容项与两个产品线关联,则会返回两次)。类似于:

ProductLine: id, name
ProductLineContents: content_id, product_line_id
Content: id, text, updated_time
select content.* from productline 
inner join productlinecontents
inner join content;
然而,我似乎不知道如何让Hibernate条件返回一个与创建它时使用的原始实体不同的实体。因此,如果我想用
createCriteria(ProductLine.class)
和适当的联接在产品线开始标准,那么它只返回
ProductLine
对象,但我需要
Content
对象

实现这一目标的最佳方式是什么


实际的数据模型要复杂得多,无法修改,或者您可以这样做

将resulttransformer别名用于entitymap


但Hql似乎是最合适的使用方式。

别名到实体映射有效:

criteria.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
List itemsList = criteria.list();

if (itemsList == null || itemsList.isEmpty()) {
    throw new EntityNotFoundException();
}

List<Content> content = new ArrayList<Content>();
Iterator iter = itemsList.iterator();
while ( iter.hasNext() ) {
    Map map = (Map) iter.next();
    content.add((Content) map.get("contentAlias"));
}

return content;
criteria.setResultTransformer(criteria.ALIAS\u TO\u ENTITY\u MAP);
List itemsList=criteria.List();
if(itemsList==null | | itemsList.isEmpty()){
抛出新EntityNotFoundException();
}
列表内容=新建ArrayList();
迭代器iter=itemsList.Iterator();
while(iter.hasNext()){
Map Map=(Map)iter.next();
content.add((content)map.get(“contentAlias”);
}
返回内容;