- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Hibernate几种关联射
Hibernate?Annotation
几种关联映射
?
一对一
(One-To-One)?
使用@OneToOne注解建立实体Bean之间的一对一关联。一对一关联有三种情况:
(1)关联的实体都共享同样的主键,
(2)其中一个实体通过外键关联到另一个实体的主键(注意要模拟一对一关联必须在外键列上添加唯一约束)
(3)通过关联表来保存两个实体之间的连接关系(要模拟一对一关联必须在每一个外键上添加唯一约束)
1.
共享主键的一对一关联映射:
?
@Entity?
@Table(name=Test_Body)?
public?class?Body?{?
?
?
?
private?Integer?id;?
?
?
?
private?Heart?heart;?
?
?
?
@Id?
?
?
?
public?Integer?getId()?{?
?
?
?
?
?
?
return?id;?
?
?
?
}?
?
?
?
public?void?setId(Integer?id)?{?
?
?
?
?
?
?
this.id?=?id;?
?
?
?
}?
?
?
?
@OneToOne?
?
?
?
@PrimaryKeyJoinColumn?
?
?
?
public?Heart?getHeart()?{?
?
?
?
?
?
?
return?heart;?
?
?
?
}?
?
?
?
public?void?setHeart(Heart?heart)?{?
?
?
?
?
?
?
this.heart?=?heart;?
?
?
?
}?
}?
@Entity?
@Table(name=Test_Heart)?
public?class?Heart?{?
?
?
?
private?Integer?id;?
?
?
?
@Id?
?
?
?
public?Integer?getId()?{?
?
?
?
?
?
?
return?id;?
?
?
?
}?
?
?
?
public?void?setId(Integer?id)?{?
?
?
?
?
?
?
this.id?=?id;?
?
?
?
}?
}?
通过
@PrimaryKeyJoinColumn
批注定义了一对一关联
?
?
?
2.
使用外键进行实体一对一关联:
?
打造专属自己的淘宝旺铺
装修店铺优化商品推广网站客服工作物流发货
@Entity?
@Table(name=Test_Trousers)?
public?class?Trousers?{?
?
?
?
@Id?
?
?
?
public?Integer?id;?
?
?
?
@OneToOne?
?
?
?
@JoinColumn(name?=?zip_id)?
?
?
?
public?TrousersZip?zip;?
}?
@Entity?
@Table(name=Test_TrousersZip)?
public?class?TrousersZip?{?
?
?
?
@Id?
?
?
?
public?Integer?id;?
?
?
?
@OneToOne(mappedBy?=?zip)?
?
?
?
public?Trousers?trousers;?
}?
上面的例子是指
Trousers
通过
Trousers
的外键列
zip_id
和
TrousersZip
关联,
@JoinColumn
批
注
定
义
了
联
接
列
,
该
批
注
和
@Column
批
注
有
点
类
似
,
但
是
多
了
一
个
名
为
referencedColumnName
的参数。
该参数定义了
所关联目标实
体中的联接列
,注意,当
referencedColumnName
关联到非主键列的时候,
关联的目标类必须实现
Serializable
,
还要注
意的是所映像的属性对应单个列(否则映射无效)
?
一对一关联可能是双向的,在双向关联中,有且仅有一端作为主体(
owner
)端存在:主体
端负责维护联接列(即更新)
,对于不需要维护这种关系的从表则通过
mappedNy
属性进行
声明。
mappedBy
的值指向主体的关联属性。例子中,
mappedBy
的值为
zip
。最后,不必也
不能再在被关联端(
ownedside
)定义联接列了,因为已经在主体端声明了。
?
如果在主体没有声明
@JoinColumn
,系统自动进行处理:在主表(
owner?table
)中将创建联
接列,列名为:主体的关联属性名
+
下划线
+
被关联端的主键列名。上面的例子中是
zip_id,
因为
Trousers
中的关联属性名为
zip
,
TrousersZip
的主键是
id
您可能关注的文档
最近下载
- 绿化景观提升工程施工组织设计.doc
- 2021NOC全国模拟考A卷解析(小学Kitten)有答案.pdf VIP
- 中国计量大学《 概率论与数理统计》2020-2021学年第二学期期末试卷(A).pdf
- 小学数学六年级上册北师大版:《百分数的应用(一)》(第一课时)全屏.pptx
- 2024年盛京银行股份有限公司秋季校园招聘笔试备考试题及答案解析.docx
- 信创云解决方案.pptx VIP
- 村集体三资管理培训.pptx VIP
- 工业大麻项目可行性研究报告(模板参考).docx
- CWI衔接CSWIP3.1课程教材.pdf
- 部编版六年级语文上册期末读写素养检测卷(广东佛山南海区大沥镇2021秋真卷).doc
文档评论(0)