例,表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自动配置好了的