分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

[Hibernate] One-To-Many

发布时间:2023-09-06 02:01责任编辑:郭大石关键词:Hibernate

  一对多需要在一的类配置多的类的set泛型集合.

  多的一端需要添加一的类作为属性,其和数据库对应的是对应表的主键.

一个购物车有多个商品,购物车有个cart_id作为主键,商品除了自己的items_id作为主键外,还有一个cart_id作为外键.

需要在Cart类中声明一个Set<Item> items,在Items类中声明一个Cart cart属性.

在配置文件Cart.hbm.xml中配置

set>name=集合名 table=表名

key>column> name=外键

one-to-many> class=类名

在items.hbm.xml中配置

添加处理:

public static void main(String[] args) { ???????Cart cart = new Cart(); ???????cart.setName("MyCart"); ???????????????Items item1 = new Items("I1", 10, 1, cart); ???????Items item2 = new Items("I2", 20, 2, cart); ???????Set<Items> itemsSet = new HashSet<Items>(); ???????itemsSet.add(item1); itemsSet.add(item2); ???????????????cart.setItems(itemsSet); ???????cart.setTotal(10*1 + 20*2); ???????????????SessionFactory sessionFactory = null; ???????Session session = null; ???????Transaction tx = null; ???????try{ ???????//Get Session ???????sessionFactory = HibernateUtil.getSessionFactory(); ???????session = sessionFactory.getCurrentSession(); ???????System.out.println("Session created"); ???????//start transaction ???????tx = session.beginTransaction(); ???????????????//Save the Model objects ???????session.save(cart); ???????session.save(item1); ???????session.save(item2); ???????tx.commit(); ???????if(!sessionFactory.isClosed()){ ???????????sessionFactory.close(); ???????}}}

因为Cart实体类中没有声明构造函数,所以只能通过默认构造函数Cart cart=new Cart();

然后set属性来实现增加Cart对象.

其中set属性的顺序只要在save在save之前即可.记得要setItems(itemsSet);

需要同时save cart和item1,item2.

然后提交.

虽然item的主键和外键都没有指定,但其主键在配置文件中如:

所以实现了自增.

hibernate帮助将其外键对应的cart_id添加到外键column上.

[Hibernate] One-To-Many

原文地址:https://www.cnblogs.com/zienzir/p/9235999.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved