@OneToMany,@ManyToOne 中 @mappedby 和@joincolumn 用法和解释

/**
 * 创建了一个实体类。
 * 
 * 如何持久化呢?
 * 
 * 1、使用@Entity进行实体类的持久化操作,当JPA检测到我们的实体类当中有
 * 
 * @Entity 注解的时候,会在数据库中生成对应的表结构信息。
 * 
 * 
 * 如何指定主键以及主键的生成策略?
 * 
 * 2、使用@Id指定主键.
 * 
 * 
 */
@Entity
@Table(name="user")
public class User {
	
	/**
	 * 使用@Id指定主键.
	 * 
	 * 使用代码@GeneratedValue(strategy=GenerationType.AUTO)
	 * 指定主键的生成策略,mysql默认的是自增长。
	 * 
	 */
	@Id @GeneratedValue(strategy=GenerationType.AUTO)
	private int id;//主键.
	
	private String name;//姓名
	
	private int age;//年龄
	
	private String remakes;//备注
	
	@ManyToOne
	@JoinColumn(name="role_id", nullable=false)
	private Role role1;//角色
 
	public int getId() {
		return id;
	}
 
	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getRemakes() {
		return remakes;
	}

	public void setRemakes(String remakes) {
		this.remakes = remakes;
	}
 
	
	
	
}

@Entity
@Table(name="role")
public class Role {
	
	@Id
	private int id;
	private String name;
	private String desc;
	
	/*
	 * 主表role 从表 user
	 * mappedBy属性应该指向从表中维护与主表关系的字段。
	 * 定义类之间的双向关系。如果类之间是单向关系,不需要提供定义,
	 * 如果类和类之间形成双向关系,我们就需要使用这个属性进行定义,
	 * 否则可能引起数据一致性的问题。该属性的值是“多”方class里的“一”方的变量名
	 * 对于Role类来说,mappedBy就应该指向User类中的role1属性。
	 * @mappedBy注解的作用:在JPA中,在@OneToMany里加入mappedBy属性可以避免生成一张中间表。
	 */
	
	
	/**
	 * 在‘一’的一方,将关系维护交给多的一方,就像一本书出版后,自己去定义自己的图书类型,
	 * 然后将自己归纳到相应图书类型下。
	 * 当级联操作时,比如某种图书类型被封杀下架了,图书馆可以选择销毁,更新。。这种图书类型下的图书,
	 * 也可以让这些书就放在那不管他了(书没了类型)
	 */
	@OneToMany(mappedBy="role1")
	private Set<User> users = new HashSet<User>();

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getDesc() {
		return desc;
	}

	public void setDesc(String desc) {
		this.desc = desc;
	}

	public Set<User> getUsers() {
		return users;
	}

	public void setUsers(Set<User> users) {
		this.users = users;
	}
	
	

}

猜你喜欢

转载自blog.csdn.net/qq_42734859/article/details/83026845