1.多对多关系
表product,category,category_has_product
@ManyToMany(mappedBy="products",cascade={CascadeType.PERSIST})
private List<Category> categorys = Lists.newArrayList();
@ManyToMany(fetch=FetchType.LAZY,cascade=CascadeType.PERSIST)
@JoinTable(name="CATEGORY_HAS_PRODUCT",
joinColumns={@JoinColumn(name="category_id")},
inverseJoinColumns={@JoinColumn(name="product_id")}
)
private List<Product> products = Lists.newArrayList();
1 单向一对多
主表 TC_PICK_RESULT_GROUP
明细表 TC_PICK_RESULT_STAFF
只需要在主表类维护一个子表集合
private Set<TcPickResultStaff> groupStaffs = new LinkedHashSet<TcPickResultStaff>();
@OneToMany(targetEntity=TcPickResultStaff.class,cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)
@JoinColumn(name="RESULT_GROUP_ID")
public Set<TcPickResultStaff> getGroupStaffs() {
return groupStaffs;
}
JoinColumn 标识子表进行左连接的外键数据库字段
引用
JPA实体关系映射之注释
下面是我总结的JPA实体关系映射的注释写法:
1.单向 一对一
@OneToMany(cascade = {CascadeType.ALL})
@JoinColumn(name = "...")
@JoinColumn注释的是保存表与表关系的字段.
2.双向 一对一
(1)
@OneToOne
@JoinColumn(name = "...")
@JoinColumn注释的是保存表与表关系的字段.
(2)
@OneToOne(mapedBy = "...")
mappedBy属性来指明所映射的实体关系,它的值为所关联实体中该属性的名称.
4.单向一对多
@OneToMany
@JoinColumn(name = "...")
@JoinColumn注释的是保存表与表关系的字段.
5.双向一对多
(一对多)
@OneToMany(mapedBy = "...")
mappedBy属性来指明所映射的实体关系,它的值为所关联实体中该属性的名称.
(多对一)
@ManyToOne
@JoinColumn(name = "...")
@JoinColumn注释的是保存表与表关系的字段.
7.单向多对多
设置双向多对多的(1)一边就可以了
@ManyToMany(targetManager = ContactEO.class, cascade = {CascadeType.ALL})
@JoinTable(name = "tb_customer_contact",
joinColumns = {
@JoinColumn(name = "cumtomer_id")
},
inverseJoinColumns = {
@JoinColumn(name = "contact_id")
})
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注释的是保存表与表关系的字段.
(2)
在联系人(ContactEO)实体类中这样配置:
@ManyToMany(cascade = {CascadeType.ALL }, mappedBy = "contacts")
mappedBy属性来指明所映射的实体关系,它的值为所关联实体中该属性的名称.
分享到:
相关推荐
hibernate 关系注解:Hibernate Annotation关系映射
mappedBy属性用法: 该属性与关联关系的维护权相关。 该属性应放在放弃维护权一方。 该属性值为对方的关联属性,表明以后的...一个是使被注解者与DB相关,一个是使被注解者放弃与DB的关系,它们是相互矛盾的。
介绍使用Hibernate注解来进行关联关系的配置,结合我的博客文章阅读更方便理解。
hibernate注解解析
hibernate注解 1.级联关系 2.增删改查 3.二级缓存 4.日志配置 5.注解解析
主要为hibernate的注解式应用方式。重点包括一对一,一对多及多对多关系的配置代码实例。 myeclipse项目工程导入即可运行(需要自行导入hibernat4.1.4包依赖(myeclipse中自带此包))。每个实例均附说明及mysql的库...
hibernate注解处理映射关系共14页.pdf.zip
使用hibernate的注解配置可以很好的完成跟实体的映射。而且还可以通过注解配置,可以完成多对一,一对多等关系的配置,非常好。
针对hibernate关系映射进行了一个总结,包含xml配置形式和@注解配置形式,one-to-many,one-to-noe,many-to-one,many-to-many等单方向的配置和双方都配置的事例
Hibernate 的注解学习 ExportDBAnnotation HibernateAnnotationUtils 【一对一】关系映射【一对多】关系映射 【多对多】关系映射 【composite复合主键】关系映射【component组件】关系映射
Hibernate之JPA注解
Hibernate映射解析 七种映射关系
主要讲述hibernate注解重点讲述如何利用注解将实体类映射成数据表,以及实体类之间的各种关系
JPA和Hibernate的关系,JPA:Java Persistence APIJPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
自己根据课本总结的使用hibernate时,实体类间映射文件即*.hbm.xml文件的写法。如果你正在学习hibernate,保证会对你有所帮助。
Hibernate一对一,一对多,多对多实例
详细javabean配置 博文链接:https://871421448.iteye.com/blog/1561798