类注解
@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类时引用。