Hibernate常用注释收集4
多对一
使用 @ManyToOne 注解定义多对一关系。
@Entity()
public class Flight implements Serializable {
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
@JoinColumn(name=”COMP_ID”)
public Company getCompany() {
return company;
}
…
}
其中@JoinColumn 注解是可选的,关键字段默认值和一对一关联的情况相似。列名为:主
题的关联属性名 + 下划线 + 被关联端的主键列名。本例中为company_id,因为关联的属性
是company, Company的主键为 id.
@ManyToOne 注解有个targetEntity属性,该参数定义了目标实体名。通常不需要定义,大
部分情况为默认值。但下面这种情况则需要 targetEntity 定义(使用接口作为返回值,而不
是常用的实体)。
@Entity()
public class Flight implements Serializable {
@ManyToOne(cascade= {CascadeType.PERSIST,CascadeType.MERGE},targetEntity=
CompanyImpl.class)
@JoinColumn(name=”COMP_ID”)
public Company getCompany() {
return company;
}
…
}
public interface Company {
…
多对一也可以通过关联表的方式来映射,通过 @JoinTable 注解可定义关联表。该关联表包
含指回实体的外键(通过@JoinTable.joinColumns)以及指向目标实体表的外键(通过
@JoinTable.inverseJoinColumns).
@Entity()
public class Flight implements Serializable {
@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
@JoinTable(name=”Flight_Company”,
joinColumns = @JoinColumn(name=”FLIGHT_ID”),
inverseJoinColumns = @JoinColumn(name=”COMP_ID”)
)
public Company getCompany() {
return company;
}
…
}
集合类型
一对多
@OneToMany 注解可定义一对多关联。一对多关联可以是双向的。
双向
规范中多对一端几乎总是双向关联中的主体(owner)端,而一对多的关联注解为
@OneToMany(mappedBy=)
@Entity
public class Troop {
@OneToMany(mappedBy=”troop”)
public Set
…
}
@Entity
public class Soldier {
@ManyToOne
@JoinColumn(name=”troop_fk”)
public Troop getTroop() {
…
}
Troop 通过troop属性和Soldier建立了一对多的双向关联。在 mappedBy 端不必也不能定
义任何物理映射。
单向
@Entity
public class Customer implements Serializable {
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name=”CUST_ID”)
public Set
…
}
@Entity
public class Ticket implements Serializable {
… //no bidir
}
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《Hibernate常用注释收集4》
本文地址:http://www.xiupu.net/archives-275.html
关注公众号:
微信赞赏
支付宝赞赏