zoukankan      html  css  js  c++  java
  • 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;
    	}
  • 相关阅读:
    oracle数据库使用sys_guid()返回乱码问题
    weblogic 环境改变后,重启应用后方法,报错java.lang.NoSuchMethodError: oracle.i18n.text.converter.CharacterConverterOGS.getInstance
    ORACLE数据库误删表后,没重新建表场景下数据恢复
    Linux环境下weblogic12开启远程debug端口
    关于HOSTS设置不生效的解决小方法
    dubbo调用 Caused by: com.alibaba.dubbo.remoting.RemotingException 异常解决方法
    textkit 研究,mark一下,一个不错的开源库:MLLabel(但是没有文档)
    swift流行UI库(github)
    Android高级第十一讲之不同系统间的区别
    欢快的使用Unity JSON吧
  • 原文地址:https://www.cnblogs.com/gaving10/p/4286528.html
Copyright © 2011-2022 走看看