hibernate注解 关系映射

来源:互联网 发布:数据库应用系统软件 编辑:程序博客网 时间:2024/04/30 07:55


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这个表关联class1class2该关联表拥有名为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")


原创粉丝点击