Hibernate(3.2)一对多使用Set
来源:互联网 发布:js文件在线压缩 编辑:程序博客网 时间:2024/06/07 08:18
数据库结构如下:
其中member表的team字段对应team的id
CREATE TABLE `member1` (
`id` varchar(50) NOT NULL,
`name` varchar(50) default NULL,
`age` varchar(50) default NULL,
`teamRole` varchar(50) default NULL,
`team` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `team1` (
`id` varchar(50) NOT NULL,
`name` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
持久层类
package example;
public class Member ...{
private String id;
private String name;
private String teamRole;
private Team team;
private String age;
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTeamRole() {
return teamRole;
}
public void setTeamRole(String teamRole) {
this.teamRole = teamRole;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Team getTeam() {
return team;
}
public void setTeam(Team team) {
this.team = team;
}
}
package example;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class Team {
private String id;
private String name;
private Set members=new HashSet();
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Set getMembers() {
return members;
}
public void setMembers(Set members) {
this.members = members;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
这是相应的HBM映射文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping package="maponetomany">
<class name="Member" table="member1">
<id name="id" column="id">
<generator class="uuid.hex"></generator>
</id>
<property name="name" column="name"/>
<property name="age" column="age"/>
<property name="teamRole" column="teamRole" />
<many-to-one name="team" column="team" />
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping package="maponetomany">
<class name="Team" table="team1">
<id name="id" column="id">
<generator class="uuid.hex"></generator>
</id>
<property name="name" column="name"/>
<set name="members" inverse="true" cascade="save-update">
<key column="team"/>
<one-to-many class="Member"/>
</set>
</class>
</hibernate-mapping>
以下是测试代码:
这里要注意的是,member的teamRole属性是通过javabean的set方式注入的
public static void main(String[] args) {
Configuration cfg=new Configuration();
cfg.configure();
SessionFactory sf=cfg.buildSessionFactory();
Session session=sf.openSession();
Transaction t=session.beginTransaction();
Team team=new Team();
team.setName("足球队-01");
Member m1=new Member();
m1.setName("01队01号");
m1.setAge("22");
m1.setTeam(team);
m1.setTeamRole("中后卫");
Member m2=new Member();
m2.setName("01队02号");
m2.setAge("33");
m2.setTeam(team);
m2.setTeamRole("守门员");
team.getMembers().add(m1);
team.getMembers().add(m2);
session.save(team);
t.commit();
System.out.println("success");
}
运行结果如下:
Hibernate: insert into team1 (name, id) values (?, ?)
Hibernate: insert into member1 (name, age, teamRole, team, id) values (?, ?, ?, ?, ?)
Hibernate: insert into member1 (name, age, teamRole, team, id) values (?, ?, ?, ?, ?)
可以看到,两个表的数据都插入了,而且关联正确(member的team值为team表的id)
- Hibernate(3.2)一对多使用Set
- Hibernate一对多使用Map和Set的区别
- hibernate 一对多 set、list配置
- hibernate一对多单向映射(set)
- hibernate一对多双向映射(set)
- Hibernate高级实体关联映射之多值的实体关联(一对多关联,使用set)
- 关于hibernate中一对多映射 list 和set映射的使用区别
- 关于hibernate中一对多映射 list 和set映射的使用区别
- hibernate 一对多查询对set的排序
- Hibernate的Set映射(一对多)的排序问题
- hibernate 一对多查询对set的排序
- Hibernate的Set映射(一对多)的排序问题
- Hibernate使用List实现一对多映射
- hibernate一对多单向关联的使用
- 使用Hibernate操作一对多关系
- Hibernate使用JPA实现一对多配置
- Hibernate 一对多例
- hibernate一对多例子
- Linux下cron的使用
- Liferay权限管理的讲解
- 如何让Google的搜索结果在新的页面打开
- swt_keygen_For_Eclipse3.3的使用
- gvim as IDE
- Hibernate(3.2)一对多使用Set
- 使用Filter对Request进行统一编码
- SQL Server 索引基础知识(7)----Indexing for AND(转自蝈蝈俊.net)
- ArrayList.toArray()
- JSEclipse :: Installation/Update(Javascript编辑插件)
- pdf转化为txt (PDFBox)
- Nokia 500 Navigation
- pdf文件加密(iText)
- OpenGL Es 视角设定(glFrustum)