hibernate使用list映射,查询出来的list集合包含多个null记录
来源:互联网 发布:c语言设计培训班 编辑:程序博客网 时间:2024/05/16 18:29
主要问题:hibernate中集合映射list中的list-index中的问题:
参见一个配置文件:
<class name="User" table="l_user">
<id column="id" name="id"/>
<property name="name" column="username" />
<list name="userInfoList" inverse="true" cascade="all" lazy="false">
<key column="userid" not-null="true"/>
<list-index column="userinfoid" />
<one-to-many class="UserInfo" />
</list>
</class>
<class name="UserInfo" table="l_userinfo">
<id name="userinfoid" column="userinfoid" />
<property name="infoType" column="infotype" />
<property name="startDate" column="startdate" type="timestamp" />
<property name="endDate" column="enddate" type="timestamp" />
<many-to-one name="includeUser" column="userid" class="User"/>
</class>
在User类的配置文件中配置了一个List是指定他向UserInfo的关联。其中有key,这是指定UserInfo类对应的table中的关联User类对应的表的外键。使用的是userId;然后就是List-index这个是有序的集合需要配置的内容。我们在这里给他配置的是userinfoid就是UserInfo对应的表的主键。但是这里面是存在一个问题的:list-index在我们取得User对象然后拿到与他关联的UserInfo的List的时候发挥一个非常重要的作用。List-index会要求从0开始,然后自增上去。如果一个User有100个与他关联的UserInfo对象。假设这些UserInfo的id分别是从0-99则没有问题。他会取到这100个关联对象。如果这些UserInfo的Id是从0-50 100-149,那就会有问题了,我们通过User访问UserInfoLIst的时候hibernate会自动发出sql语句拿到与他关联的UserInfo对象。但是他拿到的会是一个大小为150的UserInfoLIst,但是这个list中并不是每一个都是一个完整的UserInfo对象。另外多余的UserInfo对象在这个list里面都是null。这样就会导致一个很严重的问题,如果我们的UserInfo有一个Id是10000,那么他返回的List就是一个大小为10000的list。只是里面有很多空对象。而且我们在遍历访问其中的对象的时候也会做很多没有用的工作。所以我们有必要另外再建立一个属性,作为list映射的List-index使用。但是我们还非常有必要去维护他的值,而且保证他是连续的。如果这样的话那么这种使用外键维护双向的一对多的关系是一个很不可取的方式。或者我们可以直接把他换成set。
本文转载自http://www.educity.cn/wenda/83430.html
- hibernate使用list映射,查询出来的list集合包含多个null记录
- Hibernate之集合映射的使用(Set集合映射,list集合映射,Map集合映射)
- hibernate 里面list集合,返回多个null
- Hibernate 多表关联映射- Hibernate中使用的集合类型(set,list,array,bag,map)
- Hibernate集合映射之List
- 【hibernate】映射集合属性list
- Hibernate集合映射之List
- Hibernate 基于List集合映射
- Hibernate的Set,List,Map集合映射,数组映射
- Hibernate的List映射
- Hibernate的List映射
- Hibernate的List映射
- Hibernate映射 --- 集合映射(Set List Map )
- SSH框架之Hibernate的List集合映射、数组映射、List集合的数据保存
- 【Hibernate】Hibernate的集合映射(Set、List、Array、Map、Bag)
- Hibernate使用List实现一对多映射
- Hibernate的那些事-manyToOne注解映射(List集合)
- Hibernate的那些事-manyToOne注解映射(List集合)
- pulltorefresh上拉加载,没有更多数据的时候显示“加载完成”,不回调刷新接口的实现
- [leetcode 36] Valid Sudoku
- 数值优化(Numerical Optimization)学习系列-线性规划(Linear Programming)
- 黑马程序员--集合(一)
- 黑马程序员——java基础---集合(下)
- hibernate使用list映射,查询出来的list集合包含多个null记录
- 套接字的(客户端与服务器端的连接)
- This data item is already used in a primary identifier.的处理
- Android HandlerThread例子
- 如何编写dao_servlet容器处理请求资源路径_路径匹配
- ids for this class must be manually assigned before calling save():
- Tomcat远程调试配置
- T-SQL程序设计之数据类型
- Excel中根据XML映射导出XML数据