• Hibernate的双向关联。

    对象之间可以相互读取。
        
        双向只针对读取的操作。对于增、删除、改的操作没有任何影响。


案例 : 实现双向多对多

  • MenuBean.java
package bean;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set; import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table; @Entity
@Table(name = "menu")
public class MenuBean implements Serializable {
@Id
private Integer menuid;
private String menuname; @ManyToMany
@JoinTable(name = "role_menu", //指定数据库中的中间表
joinColumns = @JoinColumn(name = "menu_id"), //设置当前实体在中间表中的映射,也就是说在中间表中有一个字段叫menu_id,使它指向当前表的主键这里是menuid
inverseJoinColumns = @JoinColumn(name = "roleid") //设置对方实体在中间中的映射,也就是说在中间表中有一个字段roleid,使它指向对方表的主键。 )
private Set<RoleBean> roleSet = new HashSet<RoleBean>(); public MenuBean(Integer menuid, String menuname) {
super();
this.menuid = menuid;
this.menuname = menuname;
} public MenuBean() {
super();
// TODO Auto-generated constructor stub
} public Integer getMenuid() {
return menuid;
} public void setMenuid(Integer menuid) {
this.menuid = menuid;
} public String getMenuname() {
return menuname;
} public void setMenuname(String menuname) {
this.menuname = menuname;
} public Set<RoleBean> getRoleSet() {
return roleSet;
} public void setRoleSet(Set<RoleBean> roleSet) {
this.roleSet = roleSet;
} }
  • RoleBean.java
package bean;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Set; import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table; @Entity
@Table(name = "role")
public class RoleBean implements Serializable {
@Id
private Integer role_id;
private String role_name;
private String role_remark; @ManyToMany
@JoinTable(name = "role_menu",
joinColumns = @JoinColumn(name = "roleid"),
inverseJoinColumns = @JoinColumn(name = "menu_id"))
private Set<MenuBean> menuSet = new HashSet<MenuBean>(); public RoleBean(Integer role_id, String role_name, String role_remark) {
super();
this.role_id = role_id;
this.role_name = role_name;
this.role_remark = role_remark;
} public RoleBean() {
super();
// TODO Auto-generated constructor stub
} public Integer getRole_id() {
return role_id;
} public void setRole_id(Integer 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 String getRole_remark() {
return role_remark;
} public void setRole_remark(String role_remark) {
this.role_remark = role_remark;
} public Set<MenuBean> getMenuSet() {
return menuSet;
} public void setMenuSet(Set<MenuBean> menuSet) {
this.menuSet = menuSet;
} }
  • 添加到总配置文件即可实现。

(十五)Hibernate中的多表操作(5):双向多对多的更多相关文章

  1. (转)Hibernate中的多表操作

    http://blog.csdn.net/yerenyuan_pku/article/details/70556208 Hibernate中的多表操作 在实际开发中,我们不可能只是简简单单地去操作单表 ...

  2. (十二)Hibernate中的多表操作(2):单向多对一

    由“多”方可知“一”方的信息,比如多个员工使用同一栋公寓,员工可以知道公寓的信息,而公寓无法知道员工的信息. 案例一:使用xml配置 pojo类 Group.java package bean; // ...

  3. (十四)Hibernate中的多表操作(4):单向一对一

    案例一: 注解方式实现一对一 UserBean.java package bean; import java.io.Serializable; import javax.persistence.Col ...

  4. (十一)Hibernate中的多表操作(1):单向一对多

    一.单向一对多() 案例一(用XML文件配置): 一个班级有多个学生,班级可以查看所有学生的信息. ClassBean.java package bean; import java.util.Hash ...

  5. (十三)Hibernate中的多表操作(3):单向多对多

    多对多的处理方式是,有一张中间表,中间表保存两个多方之间的关系.首先来看实际应用场景:在之前开发的系统中,应用了基于角色的控制访问,也就是RBAC模型,一个用户可能存在多种角色,一种角色也可能有多个用 ...

  6. J2EE进阶(十六)Hibernate 中getHibernateTemplate()方法使用

    J2EE进阶(十六)Hibernate 中getHibernateTemplate()方法使用   spring 中获得由spring所配置的hibernate的操作对象,然后利用此对象进行,保存,修 ...

  7. Hibernate中的多表查询及抓取策略

    1.Hibernate中的多表查询 1.1SQL中的多表查询 [交叉连接] select * from A,B; [内连接] 显示内连接:inner join(inner 可以省略) Select * ...

  8. Hibernate超简单多表操作

    所谓一对多映射 在数据库中我们通常会通过添加外键的方式将表关联起来,表现一对多的关系. 而在Hibernate中,我们则要通过在一方持有多方的集合来实现,即在"一"的一端中使用元素 ...

  9. 【读书笔记】C#高级编程 第二十四章 文件和注册表操作

    (一)文件和注册表 对于文件系统操作,相关的类几乎都在System.IO名称空间中,而注册表操作由System.Win32名称空间中的类来处理. (二)管理文件系统 System.MarshalByR ...

随机推荐

  1. Selenium: 利用select模块操作下拉框

    在利用selenium进行UI自动化测试过程中,经常会遇到下拉框选项,这篇博客,就介绍下如何利用selenium的Select模块来对标准select下拉框进行操作... 首先导入Select模块: ...

  2. golang通过ssh实现远程文件传输

    使用ssh远程操作文件, 主要是创建ssh, 直接上代码 import ( "fmt" "github.com/pkg/sftp" "golang.o ...

  3. 性能监控 | MAT分析内存泄漏

    使用MAT分析内存泄漏(二)八周年重印版 - 知乎 .u-safeAreaInset-top { height: constant(safe-area-inset-top) !important; h ...

  4. 阿里巴巴微服务与配置中心技术实践之道 原创: 坤宇 InfoQ 2018-02-08

    阿里巴巴微服务与配置中心技术实践之道 原创: 坤宇 InfoQ 2018-02-08

  5. Webservice初体验:axis调用wsdl和document解析

    Neo君遇到了需要调用webservice接口的情况,然而作为一只小白对这方面了解困乏,经过摸索,完成了一个小的Demo,记录下. 一:背景 同事给了我一个webservice地址,打开后后缀是&qu ...

  6. Swift_IOS之提示框UIAlertController

    import UIKit class ViewController: UIViewController ,UIActionSheetDelegate{ @IBAction func btn1(_ se ...

  7. python方法未绑定错误

    相信 Python 程序员多多少少都和我一样遇到过 Method Unbound Error,直译过来就是 “方法未绑定错误”,虽然搜索之后知道了使用 @classmethod 这样的装饰起后就可以解 ...

  8. 学习 TTreeView [15] - 连接数据库 (作为给 "丁永其" 和 "DELPHI万岁" 两位朋友的回复)

    本例效果图: unit Unit1; interface uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Contro ...

  9. iis启动异常 0x80072749

    错误提示: “/”应用程序中的服务器错误. 无法向会话状态服务器发出会话状态请求.请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同 ...

  10. Windows 10在2018四月更新中默认安装了OpenSSH客户端

    客户端安装路径 C:\Windows\System32\OpenSSH 版本: