Hibernate ----- list,map 映射

在hibernate内中常用的是set集合,那是否可以使用list集合或者map呢?可以。


1.基于集合的映射:list

我们有两个实体,为grade和student。当我们把grade中的属性set改为list。


配置文件也需要做处理:

更改两处:首先把set改为list,然后新增加一个属性为list-index。用来在我们的数据库中表示顺序的(因为set集合是无序的但是list集合是有序的,因此set集合不需要)。默认情况下(不指定列名的情况下,如图所示)在student的表中产生的是一个名字为idx的列。当然也可以指定该列的名称。


默认情况下,在student中产生一列叫idx的列。后台的sql语句。


指定了该列的名字叫sort。的sql语句:



test测试

首选添加数据。创建一个grade,和三个student对象



当我们查找出一个grade的时候,如何打印和他有关的student呢。不需要在使用iteration了,而是使用list就可以。

打印出相应的学生姓名后。当我们删除一个学生的时候,数据库是怎么处理的呢?

下面是测试代码

该test执行后,结果为,第一物理数据中该行记录没有被删除,同时他的sort值没有变化,可是他的下一行数据的sort数据和原来没有删除数据比减少了一。当我们再次进行查询请求的时候,得到的结果是刚刚删除数据的下一个数据。即使数据库的表中,两个sort相同都为1,但是由于这些值都由hibernate自己维护,所以知道第一个sort=1的行是被删除的,所以请求的是第二个sort=1的数据。


2.map

grade实体类的更改:使用map


更改配置文件

key为外键的名字;map-key为映射到map集合中的key的值,key值建议为唯一的



test:

注意在添加数据的时候,要把add的方法改成map用的put方法。

添加成功:




参考:

http://study.163.com/course/courseLearn.htm?courseId=1002791010#/learn/video?lessonId=1003172241&courseId=1002791010


猜你喜欢

转载自blog.csdn.net/qq_36098284/article/details/80151345