本文共 1733 字,大约阅读时间需要 5 分钟。
我们先将test库里的表删除:
然后新建一个web工程,并编写代码:
Person.java :
public class Person { private int id; private String name; private int age; private MapPerson.hbm.xml :scores=new HashMap (); 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; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Map getScores() { return scores; } public void setScores(Map scores) { this.scores = scores; } }
Map集合属性需要使用 <map.../>元素进行映射。当配置<map.../>元素时也需要使用 <key.../>子元素映射外键列。除此之外,Map集合属性还需要映射Map key。映射Map集合key的元素比较多,当Map的key是字符串类型或日期类型时,直接使用 <map-key.../>元素来映射Map key即可。Hibernate将以外键列和key列作为 联合主键。
Test.java :
public class Test { public static void main(String[] args) { Person p1=new Person(); p1.setName("tom"); p1.setAge(10); Map运行Test.java,查看数据库:map1=new HashMap (); map1.put("语文",85.5f); map1.put("数学",95.0f); p1.setScores(map1); Person p2=new Person(); p2.setName("jack"); p2.setAge(15); Map map2=new HashMap (); map2.put("语文",85.5f); map2.put("数学",95.0f); map2.put("英语",93.5f); p2.setScores(map2); Session session=HibernateSessionFactory.getSession(); Transaction txt=session.beginTransaction(); session.save(p1); session.save(p2); txt.commit(); HibernateSessionFactory.closeSession(); }}