Hibernate引用对象非主键属性的查询

如果对引用对象的id查询,则可以不用建立引用,很经典的语句如下:

DetachedCriteria dc = DetachedCriteria.forClass(Student.class);

dc.add(Restrictions.like("team.id", teamId, MatchMode.ANYWHERE));

但如果是对引用对象的非主键查询,上述查询语句就会报错,必须用createAlias方法为引用对象建立别名,代码如下:

   Iterator> it = map.entrySet().iterator();
   while(it.hasNext()) {
    Entry entry = it.next();
    detachedCriteria.createAlias(entry.getKey(), entry.getValue());
   }

上述查询结果有查询对象,也有引用对象,如果只想有查询对象的结果集,只需加上:

criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);

你可能感兴趣的:(引用对象属性查询,Hibernate)