笔记整理hibernate的关系注解

类注解

@Entity

@Table(name = "emp")    所关联的表

在类前面添加该两个注解

主键注解

@Id

@Column(name = "表里主键名")

@GeneratedValue(generator = "定义主键值的名字")

@GenericGenerator(name = "定义主键值的名字",strategy = "increment")定义主键值按照hibernate增长

在OneToOne中如果要用A中的主键来设置B中的主键(两个表的主键同步)

   在设置@GenericGenerator时修改strategy= "foreign",添加parameters = {@Parameter(name="property",value="A名")})

在定义主键属性时引用以上注解

定义1对1关系(A<—>B)

      @OneToOne(cascade = CascadeType.ALL) 进行所有的级联操作

      @PrimaryKeyJoinColumn(name = "引用名",referencedColumnName = "引用名")   引用A中的主键关联

                在A中定义B类时引用以上注解

      @OneToOne(cascade = CascadeType.ALL,mappedBy = "被控制的属性名",fetch = FetchType.EAGER) 级联,通过之前的属性名控制,不延迟加载(lazy为延迟加载)

               在B中定义A类时引用以上注解

定义多(1)对1(多)关系(A<—>B)

     @ManyToOne(cascade = CascadeType.ALL) 级联

     @JoinColumn(name = "B中关联的属性名") 加入到该列中

               在A中定义B类时引用

    @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER,mappedBy = "被控制属性")级联,不延迟加载,通过关联设置

             在B类中定义A类时引用,注意对于“多”时,定义属性时要用Set<A> name = new HashSet<A>()来定义

定义多对多关系(A<—>B)

   @ManyToMany(cascade = CascadeType.ALL)

   @JoinTable(                                            对于没有外键的两个表关联时需要添加关联表,将其加入表格

                  name = "关联表名", joinColumns = @JoinColumn(name = "A的属性"),             将A的属性加入关联表中

                  inverseJoinColumns = @JoinColumn(name = "B的属性))                                 对应的将B的属性加入关联表中

                 在A类中定义B类时引用。添加(注意使用Set<>)

     @ManyToMany(cascade = CascadeType.All,mappedBy = "被控属性",fetch = FetchType.EAGER)

                 在B类中定义A类时引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值