• Hibernate 一对多关系映射


    以下为例,一个用户对就一个部门,一个部门则对应有多个用户

    1、实体类

    一方类:user

    public class User {
        private int id;
        private String name;
        private int age;
        private String pwd;
        private Department dpt;  //该属性与部门建立关系

    .............set、get方法略

    多方:Department

    public class Department {
        private int id;
        private String name;
        private Set users = new HashSet();  //该属性与用户建立关系

    .............set、get方法略

    }

    2、映射配置文件

    User.hbm.xml

    1. <hibernate-mapping>
    2.     <class name="com.restfullDemo.model.User" table="t_user">
    3.         <id name="id" type="int">
    4.             <column name="id" />
    5.             <generator class="native" />
    6.         </id>
    7.         <property name="name" type="java.lang.String">
    8.             <column name="name" />
    9.         </property>
    10.         <property name="age" type="int">
    11.             <column name="age" />
    12.         </property>
    13.         <property name="pwd" type="java.lang.String">
    14.             <column name="pwd" />
    15.         </property>
    16.         <many-to-one name="dpt" class="com.restfullDemo.model.Department" fetch="join" lazy="false">
    17.             <column name="dpt_id" />
    18.         </many-to-one>
    19.     </class>

    注意:当使用 hql语句“from User”进行查询,并将结果转成List时,需要将 lazy="false"即为即时加载,默认为懒加载,则在转换时找不到Departmet的数据,会报类型转换错误。

    Department.hbm.xml

    1. <hibernate-mapping>
    2. <class name="com.restfullDemo.model.Department" table="t_department">
    3. <id name="id" type="int">
    4. <column name="id" />
    5. <generator class="native" />
    6. </id>
    7. <property name="name" type="java.lang.String">
    8. <column name="NAME" />
    9. </property>
    10. <set name="users" table="user" inverse="false" lazy="false">
    11. <key>
    12. <column name="id" />
    13. </key>
    14. <one-to-many class="com.restfullDemo.model.User" />
    15. </set>
    16. </class>
    17. </hibernate-mapping>

  • 相关阅读:
    jetson nano补充:根目录/usr刷机扩容 瘦身
    pytest fixture 高级使用
    聊聊「低代码」的实践之路
    基于智能优化算法的无人机路径规划(Matlab代码实现)
    (g6)Radial 辐射布局
    ELK收集多个docker容器日志
    openGauss学习笔记-66 openGauss 数据库管理-创建和管理schema
    【项目】API接口的加签和验签
    eNSP网络实验
    自动控制原理9.4---李雅普诺夫稳定性分析
  • 原文地址:https://blog.csdn.net/jingde528/article/details/126722241