hibernate表关系配置——一对多

xiaoxiao2025-10-16  11

如:订单表与订单项表

订单表对应的实体类 (与订单项表为一对多的关系)

private Integer orderId; private String orderNo; /* * 在描述关系的时候,一定是集合接口进行接受 * 对应的订单详情一对多关系 * 不一定要用set list也可以 */ private Set<OrderItems> orderItems = new HashSet<OrderItems>(); //解决懒加载的问题 private Integer initOrderItems = 0;//0懒加载 1立即加载 public Integer getInitOrderItems() { return initOrderItems; } public void setInitOrderItems(Integer initOrderItems) { this.initOrderItems = initOrderItems; } public Set<OrderItems> getOrderItems() { return orderItems; } public void setOrderItems(Set<OrderItems> orderItems) { this.orderItems = orderItems; } public Integer getOrderId() { return orderId; } public void setOrderId(Integer orderId) { this.orderId = orderId; } public String getOrderNo() { return orderNo; } public void setOrderNo(String orderNo) { this.orderNo = orderNo; }

订单项表对应的实体类 (与订单表为多对一的关系)

private Integer orderItemId;//订单项id private Integer productId;//商品id private Integer quantity ;//数量 private Integer oid;//订单id // 对应的订单 private Order order; public Integer getOrderItemId() { return orderItemId; } public void setOrderItemId(Integer orderItemId) { this.orderItemId = orderItemId; } public Integer getProductId() { return productId; } public void setProductId(Integer productId) { this.productId = productId; } public Integer getQuantity() { return quantity; } public void setQuantity(Integer quantity) { this.quantity = quantity; } public Integer getOid() { return oid; } public void setOid(Integer oid) { this.oid = oid; } public Order getOrder() { return order; } public void setOrder(Order order) { this.order = order; }

订单表的配置文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- table:实体类对应的表名 name :实体类的全类名 --> <class table="t_hibernate_order" name="com.liu.four.entity.Order"> <!-- name : 实体类的变量名 column : 数据库的列段名 type : 变量的数据类型 --> <id name="orderId" column="order_id" type="java.lang.Integer"> <generator class="increment"></generator> </id> <property name="orderNo" column="order_no" type="java.lang.String"/> <!-- name : 在order中的orderItems的orderitem的变量名 cascade : 配置的是级联关系 inverse : 反方,将级联关系交给对方控制吗? lazy : 是否懒加载 lazy="false" 懒加载浪费资源 --> <set name="orderItems" cascade="save-update" inverse="true"> <!-- 配置外键字段 --> <key column="oid"></key> <!-- 外键表对应的实体类 --> <one-to-many class="com.liu.four.entity.OrderItems"/> </set> </class> </hibernate-mapping>

订单项表对应的配置文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class table="t_hibernate_order_item" name="com.liu.four.entity.OrderItems"> <id name="orderItemId" column="order_item_id" type="java.lang.Integer"> <generator class="increment"></generator> </id> <property name="productId" column="product_id" type="java.lang.Integer"/> <property name="quantity" column="quantity" type="java.lang.Integer"/> <property name="oid" column="oid" type="java.lang.Integer" insert="false" update="false"/> <!-- --> <many-to-one name="order" class="com.liu.four.entity.Order" column="oid"></many-to-one> </class> </hibernate-mapping>

配置好之后要记得在主配置文件中配置

<!-- 关系一对多 --> <mapping resource="com/liu/four/entity/Order.hbm.xml"/> <mapping resource="com/liu/four/entity/OrderItems.hbm.xml"/>
转载请注明原文地址: https://www.6miu.com/read-5038008.html

最新回复(0)