Hibernate使用中间表完成单向多对多关联关系的配置和级联操作示例
来源:互联网 发布:电影采集站源码 编辑:程序博客网 时间:2024/05/21 11:07
有两个表:categories和items;原本两个表是没有关系的,现在需要在新增和修改Categories表的同时对items表进行新增和修改操作。在不改变两个表结构的前提下,需要建立一个中间表category_item表来存储这两个表之间的关联关系。
一、表结构
二、Hibernate配置(只需要配置Categroies和Items的hibernate文件即可,中间表不需要单另写一个文件)
1、Categories类:categories.hbm.xml
<class name="mypack.Categories" table="categories"> <id name="id" type="java.lang.Long"><column name="id"/> <generator class="sequence"><param name="sequence">seq_categories</param></generator> </id> <property name="name" type="java.lang.String"><column name="name" not-null="true" length="50"/> </property> <idbag name="<span style="color:#ff0000;">items</span>" table="categoryItem" cascade="save-update" lazy="true"><collection-id type="java.lang.Long" column="id"> <generator class="sequence"><param name="sequence">seq_categories_items</param> </generator></collection-id><key column="categoty_id"></key><many-to-many class="<span style="color:#ff0000;">mypack.Item</span>" column="item_id"/> </idbag></class>
2、Items类:item.hbm.xml
<class name="mypack.Items" table="items"> <id name="id" type="java.lang.Long"><column name="id"/> <generator class="sequence"><param name="sequence">seq_items</param></generator> </id> <property name="name" type="java.lang.String"><column name="name" not-null="true" length="50"/> </property> <property name="basePrice" type="java.lang.Long"><column name="base_price"/> </property></class>
三、java类
Categories.java
public class Categories{private Long id;private String name;private List<Item> items = new ArrayList<Item>();public Categories(){}public Categories(Long id,String name){this.id = id;this.name = name;}//get、set方法……public void setItems(List<Item> items){this.items = items;}public List<Item> getItems(){return this.items;}}
Item.java
public class Item{private Long id;private String name;private Long basePrice;//构造方法……//get、set方法……}
三、新增/修改操作演示(本段代码是一段伪代码,只用来做操作演示)
//新增操作演示代码
Categories cate =new Catetories();
cate.setName("CateName");
List<Item> itemList = new ArrayList<Item>();
Item item = new Item();
item.setName("itemName");
item.setBasePrice(10l);
itemList.add(item);
cate.setItems(itemList);
cateService.save(Cate); //同时操作三个表,向categories表、items表和中间表category_item添加数据
//修改操作演示代码
Categories cate = cateService.getCateById(cateId);
cate.setName("cateName1");
for(Item item:cate.getItems){
item.setName("itemName1");
}
cateService.update(cate); //对categories和items表的name字段进行修改
- Hibernate使用中间表完成单向多对多关联关系的配置和级联操作示例
- hibernate 多对一单向关联关系配置的完整示例
- Hibernate关联关系映射-----基于连接表的单向多对多映射配置
- Hibernate关联关系映射-----单向多对一映射配置
- Hibernate建立多对一的单向关联关系
- Hibernate的多对多关联关系(单向和双向)
- 四、Hibernate多对一关联有关系(单向关联)
- Hibernate的一对多关联关系(单向和双向)
- Hibernate完成多对多的关联关系映射
- 12-hibernate关联关系的级联操作
- hibernate多对多的单向关联
- Hibernate学习之级联操作4——多对多关联关系
- Hibernate关联关系映射-----基于连接表的单向一对多映射配置
- Hibernate关系映射(10)_多对多单向关联
- Hibernate关系映射(7)_多对一单向关联
- hibernate-关系映射(多对一单向关联)-8
- hibernate 多对多关系中间属性关联方法
- 举例详解:Hibernate单向多对多单向关系(有关联表)以及多对一单向关系(无关联表)
- NSMethodSignature和NSInvocation的使用
- jQuery EasyUI DataGrid Checkbox 数据设定与取值
- 想成为优秀的软件工程师 不可不知的10个概念
- AMD宣布全球裁员7% 约710名员工将丢饭碗
- bzoj 1789: [Ahoi2008]Necklace Y型项链
- Hibernate使用中间表完成单向多对多关联关系的配置和级联操作示例
- 懒人成就中国O2O,你怎么看
- LayoutInflater的使用
- Pinyin4j的基本用法
- js中创建html标签、添加select下默认的option的value和text、删除select元素节点下所有的OPTION节点
- WebSphere 6.1 程序 更新文件 替换或添加单个文件
- asterisk sip trunk配置步骤
- 观察者设计模式
- BZOJ 1087 状压DP