Hibernate一对一唯一外键关联映射的实现方法实例
本文由发表于6年前 | C++ | 暂无评论 |  被围观 7,741 views+

可以认为Hibernate的一对一唯一外键关联映射是多对一的特殊情况(即是在many-to-one标签中设置:unique=true)。

下面说明单向一对一唯一外键关联映射的配置方法:

User类:

public class User implements Serializable{
	private static final long serialVersionUID = 8394979715028899027L;
	private String username; 
	private String password; 
	private ContactInfo contactInfo;

	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

ContactInfo类:

public class ContactInfo implements Serializable{
	private static final long serialVersionUID = -4336182674133849896L;
	private Integer contactid;
	private String address;
	private String postalcode;
	private String mobile;

	public Integer getContactid() {
		return contactid;
	}
	public void setContactid(Integer contactid) {
		this.contactid = contactid;
	}

	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}

	public String getPostalcode() {
		return postalcode;
	}
	public void setPostalcode(String postcode) {
		this.postalcode = postcode;
	}

	public String getMobile() {
		return mobile;
	}
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}
}

接下来在映射文件中配置user类的映射,User.hbm.xml:

<hibernate-mapping package="com.itzhai.bean.user">
	<class name="User" table="user">	

		<id name="username" column="user_username" length="18" >
		</id>	
		<property name="password" column="user_password" length="32" />
		<many-to-one name="contactInfo" unique="true"/>
	</class>
</hibernate-mapping>

其中,关键的是

表明是特殊的多对一映射,默认不进行级联操作(一对一主键关联映射默认进行级联操作),需要先保存一的一端 。
接下来在映射文件中配置ContactInfo类的映射,ContactInfo.hbm.xml:

<hibernate-mapping package="com.itzhai.bean.user">
	<class name="ContactInfo" table="contactInfo">	
		<id name="contactid" column="contactInfo_id" type="int" >
			<generator class="increment" />
		</id>
		<property name="address" column="contactInfo_address" length="100" />	
		<property name="postalcode" column="contactInfo_postalcode" length="6" />
		<property name="mobile" column="contactInfo_mobile" length="11" />	
	</class>
</hibernate-mapping>

这样一对一唯一外键关联映射就配置好了。

双向一对一唯一外键关联映射的配置方法:

只要在ContactInfo类中添加:

private User user;
public User getUser() {
	return user;
}
public void setUser(User user) {
	this.user  = user;
}

在ContactInfo.hbm.xml添加如下配置即可:

<one-to-one name="user" property-ref="contactInfo"/>

这样就可以从ContactInfo类加载User的信息了。

除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/hibernate-mapping-one-of-the-only-foreign-key-implementation-instance.html
关键字: ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 9/4
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
C++推荐专题
C++
文章评论
    没有评论
给我留言

有人回复时邮件通知我
C++的相关文章
随机文章 本月热门 热评
1 8255A芯片的初始化程序流程 2011/4/28
2 设计模式笔记 – Decorator 装饰模式 (Design Pattern) 及其在JavaIO流系统中的运用 2011/10/22
3 ubuntu下安装Bochs虚拟机的方法及其可能遇到的make问题 2011/4/29
4 org.hibernate.LazyInitializationException的解决方法 使用OpenSessionInViewFilter 2011/7/31
5 JavaScript设计模式笔记 – 组合模式 外观模式 2012/11/12
6 Hibernate复合主键的映射方法 2011/9/30
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.