zoukankan      html  css  js  c++  java
  • hibernate 单向 n-n

    版权声明:本文为博主原创文章,未经博主同意不得转载。

    https://blog.csdn.net/qilixiang012/article/details/27956057

    • 域模型:

    • 关系数据模型

    • n-n 的关联必须使用连接表
    • 与 1-n 映射相似,必须为 set 集合元素加入 key 子元素。指定 CATEGORIES_ITEMS 表中參照 CATEGORIES 表的外键为 CATEGORIY_ID. 与 1-n 关联映射不同的是。建立 n-n 关联时, 集合中的元素使用 many-to-many. many-to-many 子元素的 class 属性指定 items 集合中存放的是 Item 对象, column 属性指定 CATEGORIES_ITEMS 表中參照 ITEMS 表的外键为 ITEM_ID


    样例具体解释:
    Item.java
    package com.atguigu.hibernate.n2n;
    
    import java.util.HashSet;
    import java.util.Set;
    
    public class Item {
    
    	private Integer id;
    	private String name;
    	
    	
    	public Integer getId() {
    		return id;
    	}
    	public void setId(Integer id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    }
    

    Category.java
    package com.atguigu.hibernate.n2n;
    
    import java.util.HashSet;
    import java.util.Set;
    
    public class Category {
    
    	private Integer id;
    	private String name;
    	
    	private Set<Item> items = new HashSet<>();
    
    	public Integer getId() {
    		return id;
    	}
    
    	public void setId(Integer id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public Set<Item> getItems() {
    		return items;
    	}
    
    	public void setItems(Set<Item> items) {
    		this.items = items;
    	}
    	
    }
    

    Item.hbm.xml
    <?

    xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.atguigu.hibernate.n2n.Item" table="ITEMS"> <id name="id" type="java.lang.Integer"> <column name="ID" /> <generator class="native" /> </id> <property name="name" type="java.lang.String"> <column name="NAME" /> </property> </class> </hibernate-mapping>


    Category.hbm.xml
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    
    <hibernate-mapping package="com.atguigu.hibernate.n2n">
    
        <class name="Category" table="CATEGORIES">
        
            <id name="id" type="java.lang.Integer">
                <column name="ID" />
                <generator class="native" />
            </id>
        
            <property name="name" type="java.lang.String">
                <column name="NAME" />
            </property>
            
            <!-- table: 指定中间表 -->
            <set name="items" table="CATEGORIES_ITEMS">
                <key>
                    <column name="C_ID" />
                </key>
                <!-- 使用 many-to-many 指定多对多的关联关系. column 运行 Set 集合中的持久化类在中间表的外键列的名称  -->
                <many-to-many class="Item" column="I_ID"></many-to-many>
            </set>
            
        </class>
    </hibernate-mapping>
    


  • 相关阅读:
    驰骋工作流引擎-系统变量的引用
    驰骋工作流引擎-表单样本展示
    驰骋工作流引擎CCFLOW下载代码
    初识CSS
    初识HTML标签
    初识JDBC
    通过锁对象解决哲学家就餐问题
    MySQL基本用法
    LRU算法实现,HashMap与LinkedHashMap源码的部分总结
    Java简易实现记事本的打开与保存
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/9975334.html
Copyright © 2011-2022 走看看