• 基于List集合映射


    1、 实体类中使用List集合

    1 public class Grade {
    2     private int id;
    3     private String name;
    4     private List<Student> students = new ArrayList<Student>(0);
    5 }

    2、 映射文件

     1 <hibernate-mapping package="cn.siggy.pojo">
     2     <class name="Grade">
     3         <id name="id">
     4             <generator class="native"></generator>
     5         </id>
     6         <property name="name"/>
     7         <list name="students" cascade="all">
     8             <!-- key表示外键  column外键列名-->
     9             <key column="grade_id"></key>
    10             <!-- 在多的一端 产生一列 用来表示顺序 如果不指明列名 默认为 idx 
    11                 值由hibernate来维护
    12              -->
    13             <list-index column="sort">
    14             </list-index>
    15             <!-- one-to-many 一对多  类Grade 中  students 所表示类型 -->
    16             <one-to-many class="Student"/>
    17         </list>
    18     </class>

    3、 测试代码

     1 @Test
     2     public void testSave() throws HibernateException, SerialException, SQLException{
     3         Configuration cfg = new Configuration().configure();
     4         SessionFactory factory = cfg.buildSessionFactory(new StandardServiceRegistryBuilder()
     5         .applySettings(cfg.getProperties()).build());
     6         Session session = null;
     7         Transaction tx = null;
     8         try{
     9             session = factory.openSession();
    10             tx = session.beginTransaction();
    11             Grade grade = new Grade();
    12             grade.setName("基础");
    13             
    14             Student stu = new Student();
    15             stu.setName("张三疯");
    16             stu.setAge(22);
    17             Student stu1 = new Student();
    18             stu1.setName("老王");
    19             stu1.setAge(23);
    20             Student stu2 = new Student();
    21             stu2.setName("老李");
    22             stu2.setAge(23);
    23             //关联
    24             grade.getStudents().add(stu);
    25             grade.getStudents().add(stu1);
    26             grade.getStudents().add(stu2);
    27             //保存数据的顺序 是根据外键的配置来决定的
    28             //如果外键不能为null,那么先保存一的一端
    29             //如果外键可以为null,则可以随意保存
    30             session.save(grade);
    31             session.save(stu);
    32             session.save(stu1);
    33             session.save(stu2);
    34             
    35             tx.commit();
    36             
    37         }catch (HibernateException e) {
    38             if(tx!=null)
    39                 tx.rollback();
    40             e.printStackTrace();
    41             throw e;
    42         }finally{
    43             HibernateUtil.closeSession();
    44         }
    45     }
    46     @Test
    47     public void testGet(){
    48         Session session = null;
    49         Transaction tx = null;
    50         try{
    51             session = HibernateUtil.getSession();
    52             tx = session.beginTransaction();
    53             //取数据
    54             Grade grade = (Grade)session.get(Grade.class, 1);
    55             System.out.println("gradeName="+grade.getName());
    56             System.out.println("grade所对应的多的一端的数据");
    57             List<Student> list = grade.getStudents();
    58             for(Student stu:list){
    59                 System.out.println(stu.getName());
    60             }
    61             tx.commit();
    62         }catch (HibernateException e) {
    63             if(tx!=null)
    64                 tx.rollback();
    65             e.printStackTrace();
    66             throw e;
    67         }finally{
    68             HibernateUtil.closeSession();
    69         }
    70     }
  • 相关阅读:
    Subversion 1.5.5 与 Apache 2.2 结合
    IE6 式样表 Bug
    Dreamweaver 禁止自动换行
    错误:Internet Explorer cannot open the Internet site
    Html Agility Pack – XPath 基本语法
    不要安装 CodeSmith 5.2
    控件包含代码块,因此无法修改控件集合
    单例模式
    第一篇博文
    包与导入的概念
  • 原文地址:https://www.cnblogs.com/jiangjianzhu/p/5581450.html
Copyright © 2020-2023  润新知