由于项目刚开始设计的时候设置了各表的主键,但是因项目需求没有也不能设置外键,所以没有外键,再使用Criteria 创建检索器的时候
不能成功,使用多表关联 的方式也不能创建,老提示错误,方法如下:
Criteria ir_a = this.getSession().createCriteria(AnnualverificationFile.class);
ir_a.createAlias("housebaseinfo","housebaseinfo");
这里的第一个HOUSEBASEINFO估计是外键的因素,在我的映射文件里没有生成,也不知道能否手动修改类映射关系,最后想到另外一个办法
再数据库里建立关联表的视图,然后对视图建立过滤器检索。
方法如下:
Code
Criteria ir_vid = this.getSession().createCriteria(ViewAnnualverificationfile.class);
ir_vid.setFirstResult(bi);
ir_vid.setMaxResults(limit);
if( vannu.getDeliverycodename().intValue()!=0 )
ir_vid.add(Expression.eq("id.deliverycodename", vannu.getDeliverycodename()));
if( vannu.getYearreportmaturity().intValue()!=0 )
ir_vid.add(Expression.eq("id.yearreportmaturity", vannu.getYearreportmaturity()));
if( !vannu.getWarehouseno().equals("") )
ir_vid.add(Expression.eq("id.warehouseno", vannu.getWarehouseno()));
if( vannu.getFileclassify().intValue()!=0 )
ir_vid.add(Expression.eq("id.fileclassify", vannu.getFileclassify()));
List page_query=ir_vid.list();
//List page_query=this.getHibernateTemplate().find(queryString);
System.out.println("filter count: "+page_query.size());
if(page_query.size()>0)
{
/************************** test for query result! ok~~:O
System.out.println("queied!");
java.util.Iterator iterator = page_query.iterator();
while(iterator.hasNext()) {
ViewAnnualverificationfile ur = (ViewAnnualverificationfile) iterator.next();
System.out.println(ur.getId().getWarehouseno() +
" \t " + ur.getId().getFilename() +
"/" + ur.getId().getFileclassify());
}*/
return page_query;
}
return null;