hibernate映射关系学习笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
对象关联关系
一对一
单向:一方引用,在引用方加入被引用对象字段,注解@OneToOne 默认引用外键字段名为“被引用类名_id”,使用@JoinColumn(name=”your_name”)更改外键字段名
联合主键:
@JoinColumns({
@JoinColumn(name="add_id",referencedColumnName="id"),
@JoinColumn(name="add_code",referencedColumnName="areaCode") })
双向:双方各自引用,都加入对方的引用,注解@OneToOne,表之间各自外键引用,不符合设计要求,通常一方引用,所以在被引用方法注解:
@OneToOne(MappedBy=”引用方字段名”)。
双向一般都设MappedBy
组件映射:一对一关系通常处理为在同一张表中存储数据,若程序端需要拆分成多个实体,使用组件映射方式@Embeded(在包含实体中注解)
若需要属性重写(改列名):
@AttributeOverrides({
@AttributeOverride(name="fname",column=@Column(name="firstname")),
@AttributeOverride(name="lname",column=@Column(name="lastname")) })
多对一和一对多
多对一单向:在多方有一方的引用,注解@ManyToOne
一对多单向:在一的一方存在多方的集合(set),在一方注解@OneToMany 注意,Hibernate将一对多处理为多对多的特例,默认为两个关系表建中间表关联,所以加@JoinColumn
双向:多方注解@ManyToOne,一方注解@OneToMany(mappedBy="st")(st为多方引用一方对象名),注意一方不需再注解@JoinColumn
多对多
单向:在其中一方引用另外一方,类型为集合(set),注解@ManyToMany,若要改变中间表的表名及列名,
注解@JoinTable(name,joinColumns={@JoinColumn(name=”table1_id”)},
reverseJoinColumns={@JoinColumn(name=””)})
双向:。