请教大神,关于hibernate的criteria左连接查询。

例,表dept,表emp, 两表关联,dept主表,需要查询dept的主键,条件是dept的name和emp的name. 这是从百度找到的

 public List<FolderVO> listFetch(Long id, int folderType) {    
    Criteria criteria = getCriteria(FolderVO.class,"fo");    
    criteria.add(Restrictions.eq("fo.id", id));//id不是主键    
    criteria.add(Restrictions.eq("fo.folderType", folderType));    
    criteria.createAlias("fo.dmsVOs", "d", CriteriaSpecification.LEFT_JOIN);//左外连接    
        //criteria.setFetchMode("dmsVOs", FetchMode.JOIN);    
    criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);//根据主表去重复数据    
    return (List<FolderVO>)criteria.list();    
}  
```不知道具体的外键怎么相关联,特此请教,谢谢

public List listFetch(Long id, int folderType) {

Criteria criteria = getCriteria(FolderVO.class,"fo");

criteria.add(Restrictions.eq("fo.id", id));//id不是主键

criteria.add(Restrictions.eq("fo.folderType", folderType));

criteria.createAlias("fo.dmsVOs", "d", CriteriaSpecification.LEFT_JOIN);//左外连接

//criteria.setFetchMode("dmsVOs", FetchMode.JOIN);

criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);//根据主表去重复数据

return (List)criteria.list();

我觉得你你的判断语句也得有问题

public List listFetch(Long id, int folderType) {

Criteria criteria = getCriteria(FolderVO.class,"fo");

criteria.add(Restrictions.eq("fo.id", id));//id不是主键

criteria.add(Restrictions.eq("fo.folderType", folderType));

criteria.createAlias("fo.dmsVOs", "d", CriteriaSpecification.LEFT_JOIN);//左外连接

//criteria.setFetchMode("dmsVOs", FetchMode.JOIN);

criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);//根据主表去重复数据

return (List)criteria.list();

我觉得你的判断语句有问题

使用left jion左连接

在hibernate中的criteria 这个 只要你数据库的主外键配置好了 生成的都是类中类关系的 不需要你手动连接表 你直接是类.类.属性调用就好了

设置条件也是一样的啊 hibernate自动配置好了的