外键关联非主键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;
  }

时间: 2024-12-26 20:07:10

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

yii之relations关联非主键

yii的relations里self::BELONGS_TO默认是用当前指定的键跟关联表的主键进行join,例如: return array('reply' => array(self::BELONGS_TO, 'BookPostReply', 'postid'),);默认生成的sql是 on id = postid,id是BookPostReply的主键.但今天我遇到的需求却是需要生成 on BookPostReply.postid = t.postid,不去关联主键,而且关联其中一个字段的值

全查 外键查询 外键的非主键查询

No row with the given identifier exists-----hiberbate非主键关联

这个错误有两种情况: 1,非主键关联为配置property-ref=(关联表的非主键列) 属性! Hibernate配置文件中关联默认的是主键关联,如果要关联非主键则必须加property-ref 属性 <many-to-one name="domainBO" class="***.common.model.bo.DomainBO" fetch="select" property-ref="domain">    

主键,外键,自然主键,代理主键,关系型数据库及非关系型数据库

关系型数据库: 将复杂的数据结构转换为一个二维表格即利用关系模型把数据组织到一个二维数据表,通过SQL即结构化查询语句去操作数据:后期学习Jpa面向对象查询语句jpql语句操作数据 Oracle Oracle(甲骨文/神域) 运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域.对企业收费. DB2 IBM 速度快.可靠性好,适于海量数据,恢复性极强.适用于大中型企业领域. SQL SERVER 微软 全面,效率高,界面友好,操作容易,但是不跨平台.适用于于中小型企业领域. MYSQL

关于hibernate非主键多对一关联

一直以来,用hibernate做多对一时,关联的都是主键,今天,同事设计的表,关联的却不是主键,这下麻烦了,hibernate的many-to-one默认关联的都是主键,原来,hibernate提供了非主键的关联,即只要加一个property-ref即可,如: <many-to-one name="dept" class="Dept" property-ref="dept_no"> <column name="dept

主键,组合主键,聚集索引,非聚集索引,唯一索引

前言: 基于Oracle数据库谈谈索引们的问题,以及在什么情况下使用什么索引, 组合主键,怎么根据实际业务需求来定制自己的索引,主键的应用,来提升系统的性能. 1:主键? 在表中唯一的,也是聚集索引.作用于快速查询.该列唯一. Java代码 复制代码 收藏代码 1.ID NUMBER(38,0) PRIMARY KEY NOT NULL, 2:组合主键? 在表中以多个字段组成在表中是唯一的,也是聚集索引.作用于快速查询.该组合列唯一. Java代码 复制代码 收藏代码 1.CREATE TABL

mysql 用非主键where语句报错Error Code: 1175.You are using safe update mode and you tried …

1)这是因为MySql运行在safe-updates模式下,该模式会导致非主键条件下无法执行update或者delete命令,执行命令SET SQL_SAFE_UPDATES = 0;修改数据库模式 执行完更新之后再将SET SQL_SAFE_UPDATES 恢复为 1; 2)或者还可以在条件后面加limit语句加以限制.

对逻辑主键、业务主键和复合主键的思考

转载的: http://blog.csdn.net/sunrise918/article/details/5575054 这几天对逻辑主键.业务主键和复合主键进行了一些思考,也在网上搜索了一下相关的讨论,相关讨论可以看最下面的参考链接.下面是自己基于 SQL Server 做的一些总结,其他数据库(Oracle.MySQL.DB2.......)应该也类似吧.这个只是自己一时的思考,如有不当请告知,重新思考后再修 正. ? ? 定义(部分定义来源于 SQL Server 联机丛书): 主键(PR

MSSQL - 逻辑主键、业务主键和复合主键

转载自:http://blog.csdn.net/sunrise918/article/details/5575054 这几天对逻辑主键.业务主键和复合主键进行了一些思考,也在网上搜索了一下相关的讨论,相关讨论可以看最下面的参考链接.下面是自己基于 SQL Server 做的一些总结,其他数据库(Oracle.MySQL.DB2.......)应该也类似吧.这个只是自己一时的思考,如有不当请告知,重新思考后再修 正. 定义(部分定义来源于 SQL Server 联机丛书): 主键(PRIMARY