博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
5.7 映射组件属性:集合属性的元素为组件
阅读量:2445 次
发布时间:2019-05-10

本文共 2349 字,大约阅读时间需要 7 分钟。

集合除了可以存放基本类型、字符串类型、日期类型之外,还可以存放组件类型(也就是复合类型)。实际上,在更多的情况下,集合里存放的都是组件类型。对于这种持久化类的映射稍有不同,我们映射集合时依然使用<list.../>、<set.../>、<map.../>等元素,只是不再使用<element.../>元素来映射集合元素,而是用<component-element.../>元素来映射集合元素。

配置<component-element.../>元素时需要指定一个class属性,其值指定了集合里组件对象的类型。

<composite-element.../>的子元素
<property.../> 如果组件的属性是基本类型、字符串类型或日期类型,使用<property.../>子元素
映射这些属性
<nested-composite-element.../> 如果组件的属性又是组件类型,使用<nested-composite-element.../>
元素映射这些嵌套组件属性
<many-to-one.../> 如果组件的属性引用其他持久化实体,则应该使用<many-to-one.../>元素来映射该属性
我们先将test库里的表删除:

然后新建一个web工程,并编写代码:

Person.java :

public class Person {		private int id;	private int age;	private Map
nicks=new HashMap
(); public int getId() { return id; } public void setId(int id) { this.id = id; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Map
getNicks() { return nicks; } public void setNicks(Map
nicks) { this.nicks = nicks; } }
Name.java :

public class Name {		private String firstname;	private String lastname;	private Person owner;		public String getFirstname() {		return firstname;	}	public void setFirstname(String firstname) {		this.firstname = firstname;	}	public String getLastname() {		return lastname;	}	public void setLastname(String lastname) {		this.lastname = lastname;	}	public Person getOwner() {		return owner;	}	public void setOwner(Person owner) {		this.owner = owner;	}	}
Person.hbm.xml :

Test.java :

public class Test {	public static void main(String[] args) {		Person p=new Person();		p.setAge(20);		Map
nicks=new HashMap
(); Name kidName=new Name(); kidName.setFirstname("张"); kidName.setLastname("狗子"); Name adultName=new Name(); adultName.setFirstname("张"); adultName.setLastname("三丰"); nicks.put("幼年",kidName); nicks.put("成年",adultName); p.setNicks(nicks); Session session=HibernateSessionFactory.getSession(); Transaction txt=session.beginTransaction(); session.save(p); txt.commit(); HibernateSessionFactory.closeSession(); }}
运行Test.java,查看数据库:

你可能感兴趣的文章
物联网细分行业_2020年全国互联网细分市场可靠性研究
查看>>
加拿大加密货币交易_加密货币交易-如何制定可持续战略
查看>>
pvs-stdio ue4_使用PVS-Studio检查电报开放网络
查看>>
寻找新
查看>>
PostgreSQL中的WAL:2.预写日志
查看>>
zephyr操作系统_检查Zephyr操作系统代码
查看>>
ITMO大学的杂耍工作和学习:CS版
查看>>
矢量网络分析仪测量功分器_如何在遗留项目中引入静态代码分析器而又不劝阻团队...
查看>>
Node.js VS Python:哪个更好?
查看>>
PostgreSQL中的锁:2.行级锁
查看>>
notebooks_.NET Core与Jupyter Notebooks预览1
查看>>
pvs-stdio ue4_华为云:如今PVS-Studio多云
查看>>
vc编程查找计算机运行记录_如何查找计算机的正常运行时间和安装日期
查看>>
steam无法显示成人内容_如何在Steam上查看仅限成人游戏
查看>>
轻松将图像上传到Photobucket
查看>>
如何在Excel 2007中创建数据透视表
查看>>
如何在iPhone或iPad上启用USB受限模式(适用于iOS 11.4.1)
查看>>
注意:浏览器崩溃的技术支持弹出窗口又回来了
查看>>
如何在Ubuntu 11.10中安装Classic Gnome桌面
查看>>
亚马逊echo中国使用_如何阻止您的Amazon Echo收听
查看>>