Hibernate中的mappedBy和注解@JoinColumn

mappedBy

mappedBy用于指定具有双向关系的两个实体中。哪个实体是被关联处理的。

只有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性

@OneToMany(mappedBy=“由One的一方指向Many的一方,并且,这个属性应该等于Many的一方中含有One类的属性的对象名,否则会出错”)

关系的拥有方(Many的一方)负责关系的维护,在拥有方建立外键。所以用到@JoinColumn

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import javax.persistence.*;
import java.util.Set;

@Entity
@Table
public class Users {
@Id
@Column
private Integer id;
private String name;

//mappedBy由One的一方指向Many的一方,并且,这个属性应该等于Many的一方中含有One类的属性的对象名
@OneToMany(targetEntity = House.class, mappedBy = "user_id")
private Set<House> houseSet;

}

JoinColumn

@JoinColumn指定了Users通过外键u_id关联到当前的user_id。

用@JoinColumn指向One的一个外键字段(数据库对应外键字段名)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import javax.persistence.*;
import java.util.Date;

@Entity
@Table
public class House {
@Id
@Column
private Integer id;
private String title;

@ManyToOne(targetEntity = Users.class)
@JoinColumn(name = "u_id")
private Users user_id;

}