1)一对一外键关联映射(单向)
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name="userid",unique=true)
//一对一外键关联,使用@OneToOne,并设置了级联操作
//@JoinColum设置了外键的名称为userid(数据库字段名),如果不设置,则默认为另一类的属性名+ _id
//外键的值是唯一的(unique),不可重复,与另一类的主键一致
2)一对一外键关联映射(双向)
Class1里与上面一样,
Class2:
@OneToOne(mappedBy="class2",cascade=CascadeType.ALL)
//一对一双向关联关系,使用@OneToOne
//注意:需要加上mappedBy="class2",如果不加上的话,
//Class2也会生成一个外键(class1_id)
//mappedby="class2"需要指向与他关联对象的一个属性
//说明双向关联关系中,有且仅有一端是作为主体(owner)端存在的
//主体端负责维护联接列
//对于不需要维护这种关系的从表则通过mappedBy属性进行声明
//mappedBy的值指向主体的关联属性
//规律:只有是双向关联关系,都加上mappedby
//cascade=CascadeType.ALL级联
3)一对一关联表映射(单向)
@OneToOne(cascade = CascadeType.ALL)
@JoinTable(name ="basicdetail",
joinColumns =@JoinColumn(name="class1id"),
inverseJoinColumns =@JoinColumn(name="class2id")
//通过basicdetail这个表关联class1和class2。该关联表拥有名为class2id的外键列,该外键指向class2表,该信息定义为inverseJoinColoumns的属性值,而class1id外键列指向class1表,该信息定义为joinColumns的属性值。
4)一对一关联表映射(双向)
Class1里与上面一样,
Class2:
@OneToOne(mappedBy="class2",cascade=CascadeType.ALL)
5)一对一主键关联映射(单向)
在从表类的一端如下设置
@Id
@GeneratedValue(generator="pkGenerator")
@GenericGenerator(name ="pkGenerator",
strategy="foreign" ,
parameters={@Parameter(name="property",value="class1")})
//从表类的ID是根据主表类的ID来赋值的,这里需要设置ID生成器的策略为foreign,参数中指定从表类的ID是使用主表类对象中的ID
@OneToOne(cascade=CascadeType.ALL)
@PrimaryKeyJoinColumn
通过@PrimaryKeyJoinColumn批注定义了一对一关联
6)一对一主键关联映射(双向)
主表类的一端如下:
@OneToOne(cascade=CascadeType.ALL, mappedBy="class1")
mappedBy="class1"这个是必须的.否则会在主表类生成从表类的一个外键。
7)一对多关联映射外键关联(单向)
@OneToMany
@JoinColumn(name="orgid")
8)一对多关联映射外键关联(双向)
一端:
@OneToMany
@JoinColumn(name="orgid")
多端:
@ManyToOne
@JoinColumn(name="orgid")
9)一对多关联表映射(单向)
@ManyToOne
@JoinTable(name ="people_study",
joinColumns =@JoinColumn(name="sid"),
inverseJoinColumns =@JoinColumn(name="pid")
)
10)一对多关联表映射(双向)
一端:
@OneToMany(mappedBy="class2")
多端:
@ManyToOne
@JoinTable(name ="people_study",
joinColumns =@JoinColumn(name="sid"),
inverseJoinColumns =@JoinColumn(name="pid")
)
11)多对多关联映射(单向)
@ManyToMany
@JoinTable(name="t_u_r",
joinColumns={@JoinColumn(name="u_id")},
inverseJoinColumns={@JoinColumn(name="r_id")}
)
12)多对多关联映射(双向) User端
@ManyToMany
@JoinTable(name="t_u_r",
joinColumns={@JoinColumn(name="u_id")},
inverseJoinColumns={@JoinColumn(name="r_id")}
)
Role端
@ManyToMany(mappedBy="role")