hibernate多对多注解配法

来源:互联网 发布:异世淘宝女王txt百度云 编辑:程序博客网 时间:2024/05/19 14:53

下面是权限和角色的多对多配置
角色表实体bean

package com.sxt.beans;import java.io.Serializable;import java.util.HashSet;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.JoinTable;import javax.persistence.ManyToMany;import javax.persistence.OneToMany;import javax.persistence.Table;import org.hibernate.annotations.Cascade;@Entity@Table(name="t_role")public class Role implements Serializable {    @Id    @GeneratedValue(strategy=GenerationType.IDENTITY)    private Integer roleId;    @Column    private String roleName;    @OneToMany(cascade=CascadeType.ALL)    @JoinColumn(name="roleId")    private Set<User> users = new HashSet<User>();    @ManyToMany(cascade=CascadeType.ALL)//多对多要配置ManyToMany,Cascade=CascadeType.ALL是是否要级联    @JoinTable(name="t_role_right",joinColumns=@JoinColumn(name="roleId"),inverseJoinColumns=@JoinColumn(name="rightId"))//name="t_role_right"是中间表的表名,joinColumns=@JoinColumn(name="roleId")是这个bean和中间表的关联的字段,也就是roleId,inverseJoinColumns=@JoinColumn(name="rightId"))就是所对应的那个多的表和中间表的关联的字段,也就是rightId    private Set<Right> rights = new HashSet<Right>();    public Role() {    }    public Integer getRoleId() {        return roleId;    }    public void setRoleId(Integer roleId) {        this.roleId = roleId;    }    public String getRoleName() {        return roleName;    }    public void setRoleName(String roleName) {        this.roleName = roleName;    }    public Set<User> getUsers() {        return users;    }    public void setUsers(Set<User> users) {        this.users = users;    }    public Set<Right> getRights() {        return rights;    }    public void setRights(Set<Right> rights) {        this.rights = rights;    }}

权限表实体bean

package com.sxt.beans;import java.io.Serializable;import java.util.HashSet;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.JoinTable;import javax.persistence.ManyToMany;import javax.persistence.Table;@Entity@Table(name="t_right")public class Right implements Serializable {    @Id    @GeneratedValue(strategy=GenerationType.IDENTITY)    private Integer rightId;    @Column    private String rightName;    @Column    private String url;    @ManyToMany(mappedBy="rights")//因为是多对多所有要配置ManyToMany,mappedBy="rights"权限反转 也就是把维护两者的关系交给谁,rights就是对面权限(right)的set集合的名称    private Set<Role> roles = new HashSet<Role>();    public Right() {    }    public Integer getRightId() {        return rightId;    }    public void setRightId(Integer rightId) {        this.rightId = rightId;    }    public String getRightName() {        return rightName;    }    public void setRightName(String rightName) {        this.rightName = rightName;    }    public String getUrl() {        return url;    }    public void setUrl(String url) {        this.url = url;    }    public Set<Role> getRoles() {        return roles;    }    public void setRoles(Set<Role> roles) {        this.roles = roles;    }}

hibernate.cfg.xml文件中引入注解bean

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration>    <!-- 配置回话工厂 -->    <session-factory>        <!-- 驱动名称 -->        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>        <!-- URL -->        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/sxt</property>        <!-- 用户名 -->        <property name="hibernate.connection.username">root</property>        <!-- 密码 -->        <property name="hibernate.connection.password">root</property>        <!--方言:hibernate根据方言类将对象"翻译"成相对于的sql语句 -->        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>        <!-- 打印生成的sql语句 -->        <property name="hibernate.show_sql">true</property>        <!-- 引入注解的bean的java文件 -->        <mapping class="com.sxt.beans.Role" />        <mapping class="com.sxt.beans.Right" />        <!-- 引入映射文件 -->    </session-factory></hibernate-configuration>

注意:多对多只要配置一方很多的配置,另一方只要配置极少就好了
还有装的时候要互相装,如上面这个要权限装角色,角色也要装权限.
还有保存的时候保存级联那一方,被级联那一方会自动的级联保存.如上面这个只要保存角色,会自动级联保存权限

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 屐怎么读 应怜屐齿印苍苔 屐的拼音 屐组词 东山屐 弃之如敝屐 屐齿之折 视如敝屐 应怜屐齿印苍苔下一句 应怜屐齿印苍苔拼音 星屑 琐屑 沉香如屑 沉香屑 次元星屑 5分钟去屑小妙招 屑读音 去屑小妙招 沉香如屑苏寞 屑的读音 屑是什么梗 屑什么梗 屑怎么读 去除腿上皮屑小妙招 次元星屑怎么获得 屑意思 沉香屑第一炉香 次元星屑在哪里兑换 屑拼音 琐屑读音 去屑止痒洗发水排行榜 屑的意思 屑的拼音 顽固头屑怎么去除 磁性刮板排屑机 头屑多是什么原因造成的 生活小妙招洗头去屑 手上很干燥又小皮屑图片 头皮痒有头屑还掉头发怎么办 移动展业 展业