下面是我总结的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 = "...")
mappedBy属性来指明所映射的实体关系,它的值为所关联实体中该属性的名称.
6.双向一对多(多对一)
@ManyToOne
@JoinColumn(name = "...")
@JoinColumn注释的是保存表与表关系的字段.
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属性来指明所映射的实体关系,它的值为所关联实体中该属性的名称.