hibernate之实体@onetomany和@manytoone双向注解(转)

下面是User类:

@onetomany

 

@Entity
@Table(name="user")
public class User implements Serializable{

	
    private static final long serialVersionUID = 6177417450707400228L;
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
        @Column(name="id")
	private int id;
    
	@Column(name="name")
	private String name;
	
	@Column(name="password")
        private String password;
	
    /*
     * cascade:为级联操作,里面有级联保存,级联删除等,all为所有 
     * fetch:加载类型,有lazy和eager二种,
     *   eager为急加载,意为立即加载,在类加载时就加载,lazy为慢加载,第一次调用的时候再加载,由于数据量太大,onetomany一般为lazy
     * mappedBy:这个为manytoone中的对象名,这个不要变哦
     * Set:这个类型有两种,一种为list另一种为set
     * 
     *
     */
    @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="user")
	private Set setRole; 
	
	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 getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Set getSetRole() {
		return setRole;
	}

	public void setSetRole(Set setRole) {
		this.setRole = setRole;
	}
	
}

@manytoone

 

 

@Entity
@Table(name="role")
public class Role {
	
	
	private static final long serialVersionUID = 6177417450707400228L;   
	
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="role_id")
	private int role_id;
	
	@Column(name="role_name")
    private String role_name;
	
	@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)
	@JoinColumn(name="user_id")//加入一列作为外键
	private User user;
    
    public int getRole_id() {
		return role_id;
	}
	public void setRole_id(int role_id) {
		this.role_id = role_id;
	}
	
	public String getRole_name() {
		return role_name;
	}
	public void setRole_name(String role_name) {
		this.role_name = role_name;
	}
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}

}

有了这二个注解,我们不需要建表,hibernate会为我们自动建立表以及各种表级联系

 

其中@table为映射表名,@column为映射列名,其他的我不一一细说了。
下面就是操作了,定义了级联操作,下面是保存的。

 

public Role save() {
		User user=new User();
		user.setName("123456");
		user.setPassword("123456");
				
		Role role=new Role();
		role.setRole_name("student");
		role.setUser(user);
		
		Role roler=registerDao.save(role);
		
		return roler;
	}
posted @ 2015-02-11 16:37  gaving2016  阅读(251)  评论(0编辑  收藏  举报