zoukankan      html  css  js  c++  java
  • 多对多 hibernate映射

    数据库:

    create table EMPLOYEE
    (
      EMPID   NUMBER(6) not null,
      EMPNAME VARCHAR2(32)
    )
    
    alter table EMPLOYEE
      add primary key (EMPID)
      ;
    
      create table PROJECT
    (
      PROJID   NUMBER(6) not null,
      PROJNAME VARCHAR2(32)
    )
    
    alter table PROJECT
      add primary key (PROJID)
      ;
    create table PROJ_EMP
    (
      PROJID NUMBER(6),
      EMPID  NUMBER(6)
    )
    
    alter table PROJ_EMP
      add constraint FK_EMPLOYEE_PROJ_EMP foreign key (EMPID)
      references EMPLOYEE (EMPID);
    alter table PROJ_EMP
      add constraint FK_PROJECT_PROJ_EMP foreign key (PROJID)
      references PROJECT (PROJID);
    
    
    package com.emp.pojo;
    
    import java.util.HashSet;
    import java.util.Set;
    
    /**
     * Project entity. @author MyEclipse Persistence Tools
     */
    
    public class Project implements java.io.Serializable {
    
        // Fields
    
        private Integer projid;
        private String projname;
    
        private Set<Employee> employee = new HashSet<Employee>();
    
        // Constructors
    
        /** default constructor */
        public Project() {
        }
    
        /** full constructor */
        public Project(String projname) {
            this.projname = projname;
        }
    
        // Property accessors
    
        public Integer getProjid() {
            return this.projid;
        }
    
        public void setProjid(Integer projid) {
            this.projid = projid;
        }
    
        public String getProjname() {
            return this.projname;
        }
    
        public void setProjname(String projname) {
            this.projname = projname;
        }
    
        public Set<Employee> getEmployee() {
            return employee;
        }
    
        public void setEmployee(Set<Employee> employee) {
            this.employee = employee;
        }
    
    }

    员工

    package com.emp.pojo;
    
    import java.util.HashSet;
    import java.util.Set;
    
    /**
     * Employee entity. @author MyEclipse Persistence Tools
     */
    
    public class Employee implements java.io.Serializable {
    
        // Fields
    
        private Integer empid;
        private String empname;
    
        private Set<Project> project=new HashSet<Project>();
        // Constructors
    
        /** default constructor */
        public Employee() {
        }
    
        /** full constructor */
        public Employee(String empname) {
            this.empname = empname;
        }
    
        // Property accessors
    
        public Integer getEmpid() {
            return this.empid;
        }
    
        public void setEmpid(Integer empid) {
            this.empid = empid;
        }
    
        public String getEmpname() {
            return this.empname;
        }
    
        public void setEmpname(String empname) {
            this.empname = empname;
        }
    
        public Set<Project> getProject() {
            return project;
        }
    
        public void setProject(Set<Project> project) {
            this.project = project;
        }
    
    }
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.emp.pojo.Employee" table="employee" >
            <id name="empid" type="java.lang.Integer">
                <column name="EMPID" />
                <generator class="native" />
            </id>
            <property name="empname" type="java.lang.String">
                <column name="EMPNAME" length="32" />
            </property>
            <set name="project" table="proj_emp" cascade="save-update">
            <key column="empid" />
            <many-to-many class="com.emp.pojo.Project" column="projid" />
            </set>
        </class>
    </hibernate-mapping>
    
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- Mapping file autogenerated by MyEclipse Persistence Tools -->
    <hibernate-mapping>
        <class name="com.emp.pojo.Project" table="project" >
            <id name="projid" type="java.lang.Integer">
                <column name="PROJID" />
                <generator class="native" />
            </id>
            <property name="projname" type="java.lang.String">
                <column name="PROJNAME" length="32" />
            </property>
            <set name="employee" table="proj_emp" cascade="save-update">
                <key column="projid" />
                <many-to-many class="com.emp.pojo.Employee" column="empid"/>
            </set>
        </class>
    </hibernate-mapping>
    
    package com.emp.pojo;
    
    import static org.junit.Assert.*;
    
    import java.util.HashSet;
    import java.util.Set;
    
    
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.junit.BeforeClass;
    import org.junit.Test;
    
    import sessionfactory.HibernateSessionFactory;
    
    public class EmployeeTest {
    
        @BeforeClass
        public static void setUpBeforeClass() throws Exception {
        }
    
        @Test
        public void test() {
            Session session = HibernateSessionFactory.getSession();
            Transaction tx= session.beginTransaction();
            Project proj1 = new Project();
            proj1.setProjname("qq二次开发");
            Project proj2 = new Project();
            proj2.setProjname("华为");
            Project proj3 = new Project();
            proj3.setProjname("可乐");
            Set<Project> xiaozhangset = new HashSet<Project>();
            Employee xiaozhang = new Employee();
            xiaozhang.setEmpname("张晓华");
            Employee xiaowang = new Employee();
            xiaowang.setEmpname("王国光");
    
            xiaozhangset.add(proj1);
            xiaozhangset.add(proj2);
            xiaozhang.setProject(xiaozhangset);
            xiaowang.setProject(xiaozhangset);
            session.save(xiaozhang);
            session.save(xiaowang);
            tx.commit();
    
        }
    
    }
    

    测试,程序分别将记录加入三个表

  • 相关阅读:
    javaweb请求编码 url编码 响应编码 乱码问题 post编码 get请求编码 中文乱码问题 GET POST参数乱码问题 url乱码问题 get post请求乱码 字符编码
    windows查看端口占用 windows端口占用 查找端口占用程序 强制结束端口占用 查看某个端口被占用的解决方法 如何查看Windows下端口占用情况
    javaWeb项目中的路径格式 请求url地址 客户端路径 服务端路径 url-pattern 路径 获取资源路径 地址 url
    ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段
    HttpServletResponse ServletResponse 返回响应 设置响应头设置响应正文体 重定向 常用方法 如何重定向 响应编码 响应乱码
    Servlet主要相关类核心类 容器调用的过程浅析 servlet解读 怎么调用 Servlet是什么 工作机制
    linq查询语句转mongodb
    winddows rabbitmq安装与配置
    Redis For Windows安装及密码
    出现,视图必须派生自 WebViewPage 或 WebViewPage错误解决方法
  • 原文地址:https://www.cnblogs.com/mrcharles/p/11879890.html
Copyright © 2011-2022 走看看