hiberante标准中的criteria.add和criteria.equals有什么区别?
只是例子:
返回 25 条记录
criteria.equals(Restrictions.eq("templateType", TemplateType.DEFAULT_TEMPLATE));
返回 2 条记录:
criteria.add(Restrictions.eq("templateType", TemplateType.DEFAULT_TEMPLATE));
当我这样做时hibernate.show_sql
,输出是
- for
criteria.equals
, 没有生成语法 - 对于
criteria.add
, this_.template_type=?
注意:使用休眠 3。
编辑:
try{
List<Form> forms=Collections.emptyList();
Criteria normCriteria=session.createCriteria(NormMaster.class);
normCriteria.add(Restrictions.eq("id",normId));
normCriteria.setProjection(Projections.property("libraryId"));
List<Long> libNormIds=normCriteria.list();
if(libNormIds!=null && libNormIds.size()>0)
{
Criteria criteria=session.createCriteria(Form.class);
criteria.add(Restrictions.in("normId", libNormIds));
criteria.equals(Restrictions.eq("templateType", TemplateType.DEFAULT_TEMPLATE));
//criteria.add(Restrictions.eq("templateType", TemplateType.DEFAULT_TEMPLATE));
criteria.setFetchMode("formControlMaps", FetchMode.JOIN);
criteria.setFetchMode("formControlMaps.data", FetchMode.JOIN);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
forms=criteria.list();
}
return forms;
}
catch (Exception e) {
e.printStackTrace();
}