Hibernate 再接触 集合映射
不太重要
List 用于排序
Map key一般是user的某个字段(多半是主键 integer)
package com.bjsxt.hibernate; import java.util.HashMap;
import java.util.Map; import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MapKey;
import javax.persistence.OneToMany;
import javax.persistence.Table; @Entity
@Table(name="t_group")
public class Group {
private int id;
private String name;
//private Set<User> users = new HashSet<User>(); /*private List<User> users = new ArrayList<User>(); //List不常用 主要用在排序 @OneToMany(mappedBy="group",
cascade={CascadeType.ALL}
)
@OrderBy("name ASC") //按照name的大小顺序排序
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}*/ private Map<Integer, User> users = new HashMap<Integer, User>(); @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;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }
User.java
package com.bjsxt.hibernate; import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Table; @Entity
@Table(name="t_user")
public class User {
private int id;
private String name;
private Group group;
@ManyToOne(cascade={CascadeType.ALL})
public Group getGroup() {
return group;
}
public void setGroup(Group group) {
this.group = group;
}
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@Test
public void testLoadGroup() { Session s = sessionFactory.getCurrentSession();
s.beginTransaction();
//User u = (User)s.load(User.class, 1);
//u.setGroup(null);
//s.delete(u);
Group g = (Group)s.load(Group.class, 1);
for(Map.Entry<Integer, User> entry : g.getUsers().entrySet()) {
System.out.println(entry.getValue().getName());
}
//s.createQuery("delete from User u where u.id = 1").executeUpdate();
s.getTransaction().commit(); }
Hibernate 再接触 集合映射的更多相关文章
- Hibernate 再接触 继承映射
用一张 每一个类一张表 建立外键 第一种 一张总表 Person package com.bjsxt.hibernate; import javax.persistence.Discriminator ...
- Hibernate 再接触 组件映射
将另外一个类嵌入到另外一个类 从而合并生成一张表 Husband.java package com.bjsxt.hibernate; import javax.persistence.Embedded ...
- Hibernate 再接触 关系映射 一对一单向外键联合主键关联
例子: Husband.java package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persiste ...
- Hibernate 再接触 关系映射 一对一双向外键关联
凡是双向关联必设mapped by 由对方主导 wifi.java package com.bjsxt.hibernate; import javax.persistence.Entity; imp ...
- Hibernate 再接触 关系映射 一对一单向外键关联
对象之间的关系 数据库之间的关系只有外键 注意说关系的时候一定要反面也要说通 CRUD 数据库之间设计 主键关联 单向的外键关联 中间表 一对一单向外键关联 Husband.java package ...
- HIbernate学习笔记(七) hibernate中的集合映射和继承映射
九. 集合映射 1. Set 2. List a) @OrderBy 注意:List与Set注解是一样的,就是把Set更改为List就可以了 private List< ...
- Hibernate中的集合映射
1.定义实体 public class User { private int userId; private String userName; private Set<String> ad ...
- Hibernate 再接触 悲观锁和乐观锁
为什么取1248 二进制 CRUD 移位效率高 在并发和效率选择一个平衡点 一般不会考虑幻读 因为我们不会再一个事务里查询两次,(只能设置为seralizable) 悲观锁和乐观锁的前提是read-u ...
- Hibernate 再接触 一级缓存 二级缓存 查询缓存
缓存 就是把本来应该放在硬盘里的东西放在内存里 将来存内存里读 一级缓存: session缓存 二级缓存: sessionFactory级别的 (适合经常访问,数据量有限,改动不大) 很多的se ...
随机推荐
- C#语言正则用法
string phone =""; string pattern @"|\d{10}"; bool rusurt = false; Console.WriteL ...
- 基于pyQt5开发的股价显示器(原创)
#/usr/bin/env python # -*- coding: utf-8 -*- ''' @author="livermorium116" 为了绕开公司内网而开发的 股票实 ...
- Java - 25 Java 包(package)
Java 包(package) 为了更好地组织类,Java提供了包机制,用于区别类名的命名空间. 包的作用 1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用. 2 如同文件夹一样,包 ...
- 查看linux文件目录的大小和文件夹包含的文件数
du -h --max-depth=|sort -n du -h --max-depth=|grep G|sort -n df -h 清理/var/log # 清除 # 一定要以root身份来运行这个 ...
- hdfs底层存储分隔符
字段分割 \ map字段里面key \ value \ 每行结尾用linux换行符 \0a '\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格,通常敲一个回车键,即是回车,又是换行( ...
- linux运行.sh命令
# chmod +x AAA.sh 授权 # ./AAA.sh 运行
- 字符串截取函数slice, substring, substr
在日常项目需求中,常常会遇到需要截取字符串操作的工作,而ECMAScript为我们提供了原生的截取字符串的函数,而且提供了三个:slice, substring, substr.我们怎么判断在什么时候 ...
- linux中使用pip命令遇到的一些问题
一 安装readline包之后python3.6导入模块异常退出 Type "help", "copyright", "credits" o ...
- day5--装饰器函数的信息打印,迭代器,生成器,列表推导式,内置函数
本文档主要内容: 一 装饰器函数的信息打印 二 迭代器 三 生成器 四 生成器表达式和列表推导式 五 内置函数 一 装饰器函数的信息打印 一个函数一旦被装饰器给装饰后,这个函数的信息使用原来的命令打印 ...
- javafx自动补全
public boolean showUpload2HomeDialog(final OperationInfo initDataInfo) { boolean result = false; try ...