public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private Map
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Map
return students;
}
public void setStudents(Map
this.students = students;
}
}
在map的value为string等类型的时候只需要配置一个hbm.xml文件即可。
[html]
< xml version="1.0" encoding="UTF-8" >
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
< xml version="1.0" encoding="UTF-8" >
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
name为banji 类中map类型的变量名,map中可以指定一个table表示map键值对存放的表,如果不显式说明,那么将创建一个名为name属性的值得数据表。key 依然是表示students表(默认创建的表名为students)的外键。index表示map中的key ,column表示表中用表中的哪一列来存放key值,下面的element 为map的value,column同理。同时需要说明的是使用hibernate提供的SchemaExport来生成数据库表的时候,students表的主键是map的key和banji_id,因为这个时候,任何一个信息都无法确认一行数据了,因为可能有多个班级,每个班级里面都有编号一样的学生。
下面是测试的代码:
[html]
public class Map1Test {
public static void main(String[] args) {
Session session = HibernateSessionFactory.openSession();
Transaction tx = session.beginTransaction();
Banji banji = new Banji();
banji.getStudents().put("101001", "zhangsan");
banji.getStudents().put("101002", "lisi");
banji.getStudents().put("101003", "wangwu");
try
{
session.save(banji);
tx.commit();
}
catch(Exception ex)
{
ex.printStackTrace();
if(tx != null)
{
tx.rollback();
}
}
finally
{
session.close();
}
}
}
public class Map1Test {
public static void main(String[] args) {
Session session = HibernateSessionFactory.openSession();
Transaction tx = session.beginTransaction();
Banji banji = new Banji();
banji.getStudents().put("101001", "zhangsan");
banji.getStudents().put("101002", "lisi");
banji.getStudents().put("101003", "wangwu");
try
{
session.save(banji);
tx.commit();
}
catch(Exception ex)
{
ex.printStackTrace();
if(tx != null)
{
tx.rollback();
}
}
finally
{
session.close();
}
}
}
另一种map映射的情况是map的value是一个实体类,即在数据库字段中没有与之相对应的。下面以Club和Player为例说明。下面是pojo类代码
[java]
public class Club {
private String id;
private String name;
private Map
private Map
public Map
return field;
}
public void setField(Map
this.field = field;
}
public Map
return team;
}
public void setTeam(Map
this.team = team;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String n