JPA 实体关系注解

1.单向一对一
@OneToMany(cascade = {CascadeType.ALL})
@JoinColumn(name = "...")
@JoinColumn注释的是保存表与表关系的字段.
2.双向一对一(1)
@OneToOne
@JoinColumn(name = "...")
@JoinColumn注释的是保存表与表关系的字段.
3.双向一对一(2)
@OneToOne(mapedBy = "...")
mappedBy属性来指明所映射的实体关系,它的值为所关联实体中该属性的名称.
4.单向一对多
@OneToMany
@JoinColumn(name = "...")
@JoinColumn注释的是保存表与表关系的字段.
5.双向一对多(一对多)
@OneToMany(mapedBy = "...")
@OrderBy("block,blockOrder") // 排序 前后,升序 (AbcLayoutmodule 内字段)
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "layout")
public List<AbcLayoutmodule> getLayoutmoduleList() {
return layoutmoduleList;
}
fatch: 可选择项包括:FetchType.EAGER 和FetchType.LAZY。前者表示关系类在主类加载的时候 同时加载;后者表示关系类在被访问时才加载,默认值是FetchType. LAZY。
cascade: CascadeType[]类型。该属性定义类和类之间的级联关系。定义的级联关系将被容器视为对当前类对象及其关联类对象采取相同的操作, * 而且这种关系是递归调用的。举个例子:Order 和OrderItem有级联关系,那么删除Order 时将同时删除它所对应的OrderItem对象。 * 而如果OrderItem还和其他的对象之间有级联关系,那么这样的操作会一直递归执行下去。
cascade的值只能从CascadeType.PERSIST(级联新建)、
CascadeType.REMOVE(级联删除)CascadeType.REFRESH(级联刷新)CascadeType.MERGE(级联更新)中选择一个或多个。
还有一个选择是使用CascadeType.ALL,表示选择全部四项。
mappedBy: 定义类之间的双向关系。如果类之间是单向关系,不需要提供定义,如果类和类之间形成双向关系,我们就需要使用这个属性进行定义, 否则可能引起数据一致性的问题。
mappedBy: 属性来指明所映射的实体关系,它的值为所关联实体中该属性的名称.
6.双向一对多(多对一)
@ManyToOne
@JoinColumn(name = "...")
@JoinColumn注释的是保存表与表关系的字段.
@JoinColumn(name = "LAYOUT_ID")
7.单向多对多
还没有遇到过.
8.双向多对多(1)
如客户(CustomerEO)实体与联系人(ContactEO)实体是双向多对多的关系.
则在客户(CustomerEO)实体类中这样配置:
@ManyToMany(targetManager = ContactEO.class, cascade = {CascadeType.ALL})
@JoinTable(name = "tb_customer_contact",
joinColumns = {
@JoinColumn(name = "cumtomer_id")
},
inverseJoinColumns = {
@JoinColumn(name = "contact_id")
})
@JoinTable用于注释关联的表.
joinColumns属性表示,在保存关系的表中,所保存关联关系的外键的字段,并配合@JoinColumn标记使用.
例如以下的映射配置,表示字段customer_id为外键关联到customer表中的id字段.
joinColumns = {
@JoinColumn(name = "cumtomer_id", referencedColumnName = "id")
},
inverseJoinColumns属性与joinColumns属性类似,它保存的是保存关系的另一个外键字段.
例如以下的映射配置,表示字段address_id为外键关联到address表中的id字段.
inverseJoinColumns = {
@JoinColumn(name = "contact_id", referencedColumnName = "id"))
}
@JoinColumn注释的是保存表与表关系的字段.
9.双向多对多(2)
在联系人(ContactEO)实体类中这样配置:
@ManyToMany(cascade = {CascadeType.ALL }, mappedBy = "contacts")
mappedBy属性来指明所映射的实体关系,它的值为所关联实体中该属性的名称.
10.枚举类型
@Enumerated(EnumType.STRING)
@Column(name = "POSITION")
public GroupPosition getPosition() { //GroupPosition 为枚举类
return position;
}
原文: http://hi.baidu.com/willrom/blog/item/775c243fd65cbcff54e723a7.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值