Hibernate学习_015_集合映射
来源:互联网 发布:做一个淘宝网页多少钱 编辑:程序博客网 时间:2024/05/22 15:21
关于集合映射,在前面我们已经用到了Set类型,这个是我们一般推荐使用的类型,它主要的特征就是集合里面不可以存放相同的元素。
这里我们主要讲解一下List和Map这两种类型。还是拿Goup和User这个一对多的双向来示例。由于只需要在一的一段使用集合,所以这里的User还是和以前一样,没变,变化的只是Group类的注释,而且相对简单,所以这里只给出相关的Group类和相关的测试代码:
List集合:
@Entity@Table(name="t_group")public class Group {private int id;private String name;private List<User> users = new ArrayList<User>();@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}@OneToMany(mappedBy="group",cascade=CascadeType.ALL)@OrderBy("name ASC")public List<User> getUsers() {return users;}public void setUsers(List<User> users) {this.users = users;}public String getName() {return name;}public void setName(String name) {this.name = name;}}首先,使用@OneToMany声明这是一个一对多的关联映射,由于List有一个很特殊的特点(其中的元素可排序),所以我们使用@OrderBy这个注解说明当我们通过Group对象取出User集合的时候,里面的User对象按照属性name 升序排列。现骨干的测试代码如下:
@Testpublic void saveGroupAndUsers(){Session s = sessionFactory.getCurrentSession();s.beginTransaction();Group g = new Group();g.setName("g1");User u1 = new User();User u2 = new User();User u3 = new User();u1.setName("u1");u2.setName("u2");u3.setName("u3");g.getUsers().add(u1);g.getUsers().add(u3);g.getUsers().add(u2);u1.setGroup(g);u2.setGroup(g);u3.setGroup(g);s.save(g);s.getTransaction().commit();}@Testpublic void getGroup(){saveGroupAndUsers();Session s = sessionFactory.getCurrentSession();s.beginTransaction();Group g = (Group)s.get(Group.class, 1);List<User> list = g.getUsers();for(User u : list){System.out.println(u.getName());}s.getTransaction().commit();}运行以上测试,我们会发现,尽管我们是存入Group.users中的时候,是按照u1,u3,u2的顺序存放的,但是当我们取出数据打印的时候,发现打印顺序是按照u1,u2,u3的顺序打印的。
Map集合:
Map集合里面所有元素都是由键值对组成。比较简单,直接给出代码示例:
@Entity@Table(name="t_group")public class Group {private int id;private String name;private Map<Integer,User> users = new HashMap<Integer,User>();@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}@OneToMany(mappedBy="group" ,cascade=CascadeType.ALL)@MapKey(name="id")public Map<Integer, User> getUsers() {return users;}public void setUsers(Map<Integer, User> users) {this.users = users;}public String getName() {return name;}public void setName(String name) {this.name = name;}}测试代码如下:
@Testpublic void getGroup(){saveGroupAndUsers();Session s = sessionFactory.getCurrentSession();s.beginTransaction();Group g = (Group)s.get(Group.class, 1);Map<Integer,User> users = g.getUsers();for(Map.Entry<Integer, User> entry: users.entrySet()){System.out.println(entry.getValue().getName());}s.getTransaction().commit();}
0 0
- Hibernate学习_015_集合映射
- Hibernate集合映射学习
- hibernate集合映射学习笔记
- 【HIbernate框架学习】:Hibernate集合映射
- Hibernate 3.2 学习笔记 映射集合类
- Hibernate学习文档_集合映射
- 【Hibernate学习笔记】映射值类型集合
- Hibernate学习笔记:集合映射之映射Map
- Hibernate学习笔记:集合映射之映射List
- Hibernate学习笔记:集合映射之映射Set, Bag
- Hibernate学习22 -- 关联映射12 -- 集合映射
- Hibernate学习笔记:集合映射之映射Map
- Hibernate学习笔记(七)----集合映射、继承映射、作业
- Hibernate 学习笔记07 --集合映射_&_继承映射
- Hibernate学习笔记1— Hibernate中的集合映射
- Hibernate高级映射 --- 集合映射
- Hibernate高级映射 --- 集合映射
- Hibernate高级映射 --- 集合映射
- 高品质的Bootstrap3.0主题模板(专题着陆页/个人主页/单页网站/作品集网页)
- Android ViewGroup拦截触摸事件详解
- OJ2001题计算两点间的距离
- Windows消息响应机制
- 手机网站的引导页设计杂谈
- Hibernate学习_015_集合映射
- 在ArrayList集合中的四种遍历方法
- 利用cocos2dx 3.2开发消灭星星(八)游戏的结束判断与数据控制
- 最新iOS 8 的应用程序图标模板PSD
- 一道小学数学题,坑死我了!!!
- 关于递归调用栈需要空间大小分析
- Hnu 11187 Emoticons :-) (ac自动机+贪心)
- 【信息图】iPhone屏幕分辨率终极指南
- 3-4 计算长方形的周长和面积