- 主表
- Order.hbm.xml
- <hibernate-mapping>
- <!-- 配置实体类对应的数据表格 -->
- <class table="tt_order" name="com.zking.entity.Order">
- <id name="orderId" type="java.lang.Integer">
- <column name="order_id"></column>
- <generator class="increment"></generator><!-- increment自动替增 -->
- </id>
- <property name="orderNo" type="java.lang.String">
- <column name="order_no"></column>
- </property>
- <!-- 如果需要进行删除的级联操作,那么需要在这里加上inverse=true将对方设置为主控方 -->
- <!-- 一对多使用的标签 cascade对应多的一方也会新增修改 , inverse(只会再删除有用,true将对面设为主控方,先删对面) ,all新增修改删除-->
- <set name="orderItems" inverse="true" cascade="all">
- <!-- column写将两个表关联起来的外键(多的那一方引用的外键) -->
- <key column="oid"></key>
- <!-- 关联的实体类,找到实体类然后找到映射文件 -->
- <one-to-many class="com.zking.entity.OrderItem" />
- </set>
- </class>
- </hibernate-mapping>
- 从表
- OrderItem.hbm.xml
- <hibernate-mapping>
- <class table="tt_order_item" name="com.zking.entity.OrderItem">
- <id name="orderItemId" type="java.lang.Integer">
- <column name="order_item_id"></column>
- <generator class="increment"></generator>
- </id>
- <property name="productId" type="java.lang.Integer">
- <column name="product_id"></column>
- </property>
- <property name="quantity" type="java.lang.Integer">
- <column name="quantity"></column>
- </property>
- <!--insert,是否能新增,update,是否能修改 -->
- <property name="oid" type="java.lang.Integer" insert="false" update="false">
- <column name="oid"></column>
- </property>
- <!-- 多对一关联关系映射配置 --><!--name属性,class,引用的类 -->
- <many-to-one name="order" class="com.zking.entity.Order">
- <column name="oid"></column><!-- 被引用的外键声明-->
- </many-to-one>
- </class>
- </hibernate-mapping>
- Order实体类 一对多
- private Integer orderId;
- private String orderNo;
- //引用的类b将被定义为类a的属性(放在哪里哪个就是类a)
- private Set<OrderItem> orderItems=new HashSet<>();
- //延迟加载的
- private Integer lazyInt=0;
- setget;
- //不能两个同时写toString因为order包含orderitem,如果orderitem在写一个toString他就会在到order里面找
- OrderItem实体类 多对一
- private Integer orderItemId;
- private Integer productId;
- private Integer quantity;
- private Integer oid;
- private Order order;//引用的类b将被定义为类a的属性(放在哪里哪个就是类a)
- 自表关联(数据库的无限级分类)
- 实体类的结构,toString()子节点父节点给其中的一个
- TreeNode.hbm.xml(实体类的映射配置文件)记得去核心配置文件注册
- <hibernate-mapping>
- 和一对多差不多只是结合到一起了
- <class table="t_sys_tree_node" name="com.zking.entity.TreeNode">
- <id name="treeNodeId" type="java.lang.Integer">
- <column name="tree_node_id"></column>
- <generator class="increment"></generator><!-- increment自动替增 -->
- </id>
- <property name="treeNodeName" type="java.lang.String">
- <column name="tree_node_name"></column>
- </property>
- ........
- <property name="parentNodeId" type="java.lang.Integer" update="false" insert="false">
- <column name="parent_node_id"></column>
- </property>
- <!--一对多双向自关联之子节点配置 --><!--name:属性名 ,inverse:主控方为对方 -->
- <set name="children" inverse="true" cascade="save-update">
- <key column="parent_node_id" />
- <one-to-many class="com.zking.entity.TreeNode" />
- </set>
- 如果实体类用的是list集合,就得用<bag>标签,用list和set,差不多list多一个排序
- <!-- 父节点 -->
- <many-to-one name="parent" class="com.zking.entity.TreeNode"column="parent_node_id" />
- </class>
- </hibernate-mapping>
一对多,多对一(数据库的主外连接)
最新推荐文章于 2024-02-28 06:45:00 发布