外键关联非主键id时-hbm.xml配置,及其分页查询DaoImpl

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了外键关联非主键id时-hbm.xml配置,及其分页查询DaoImpl相关的知识,希望对你有一定的参考价值。

 

表关联时,外键关联非主键id时-hbm.xml配置:

(由于hibernate默认为关联主键查询,故需要配置相关hql语句的属性)

<many-to-one name="areas" class="com.hnqy.entity.Areas" fetch="select" property-ref="areaid" foreign-key="areaid">
<column name="area" />
</many-to-one>

其中:foreign-key为主表字段,property-ref为类属性

关于

hibernateTemplate.get(Ordermanager.class, id);返回为类对象

hibernateTemplate.find("from Shoppingitems where orderid = ? ", id);返回为List结合

关于查询分页的 DaoImpl 

public List<Ordermanager> findByPage( String orderNumber,String userAccount,String sendName,Integer orderState , int currentPage, int pageSize) {
  Session session=hibernateTemplate.getSessionFactory().getCurrentSession();
  List Hqllist=new ArrayList<>();
  StringBuffer hql=new StringBuffer("from Ordermanager where 1=1 ");
  if(orderNumber!=null&& !"".equals(orderNumber)){
    hql.append(" and orderNumber= ? ");
    Hqllist.add(orderNumber);
  }
  if(userAccount!=null&& !"".equals(userAccount)){
    hql.append(" and userAccount= ? ");
    Hqllist.add(userAccount);
  }
  if(sendName!=null&& !"".equals(sendName)){
    hql.append(" and sendName= ? ");
    Hqllist.add(sendName);
  }
  if(orderState!=null&& !"".equals(orderState)){
    hql.append(" and orderState= ? ");
    Hqllist.add(orderState);
  }
  Query q=session.createQuery(hql.toString());
  for (int i = 0; i < Hqllist.size(); i++) {
    q.setParameter(i, Hqllist.get(i));
  }
  q.setFirstResult((currentPage-1)*pageSize).setMaxResults(pageSize);
  List<Ordermanager> list1=q.list();
  return list1;
  }

以上是关于外键关联非主键id时-hbm.xml配置,及其分页查询DaoImpl的主要内容,如果未能解决你的问题,请参考以下文章

使用非主键的列创建外键

Hibernate的关联关系映射

hibernate 一对多双向关联 外键值为空 怎么结决?

hibernate.hbm.xml必须必须配置主键

Hibernate--JavaBean.hbm.xml配置

Hibernate —— Entity.hbm.xml