使用List和Map有很多共性,比如说不能再1方设置inverse="true"
不同的是,list可以保留元素的顺序,这个使通过一个idx字段来实现的,比如说Team和Student的1对多关系,我们给team加入学生的时候,需要记录加入的顺序,这时候我们可以使用list方式,并在student表中新增加一个idx字段(但在Student实体类中不定义idx属性)
数据库结构:
 create
      
      
         
      
      
        table
      
      
         teamList (id 
      
      
        varchar
      
      
        (
      
      
        32
      
      
        ),teamname 
      
      
        varchar
      
      
        (
      
      
        32
      
      
        ));
      
        create
      
      
         
      
      
        table
      
      
         teamList (id 
      
      
        varchar
      
      
        (
      
      
        32
      
      
        ),teamname 
      
      
        varchar
      
      
        (
      
      
        32
      
      
        ));
         create
      
      
         
      
      
        table
      
      
         studentList (id 
      
      
        varchar
      
      
        (
      
      
        32
      
      
        ),cardid 
      
      
        varchar
      
      
        (
      
      
        32
      
      
        ),name 
      
      
        varchar
      
      
        (
      
      
        32
      
      
        ),age 
      
      
        int
      
      
        ,description 
      
      
        varchar
      
      
        (
      
      
        32
      
      
        ), team_id 
      
      
        varchar
      
      
        (
      
      
        32
      
      
        ),idx 
      
      
        int
      
      
        );
      
      
        create
      
      
         
      
      
        table
      
      
         studentList (id 
      
      
        varchar
      
      
        (
      
      
        32
      
      
        ),cardid 
      
      
        varchar
      
      
        (
      
      
        32
      
      
        ),name 
      
      
        varchar
      
      
        (
      
      
        32
      
      
        ),age 
      
      
        int
      
      
        ,description 
      
      
        varchar
      
      
        (
      
      
        32
      
      
        ), team_id 
      
      
        varchar
      
      
        (
      
      
        32
      
      
        ),idx 
      
      
        int
      
      
        );
      
    
POJO
 package
      
      
         Collection.List;
      
        package
      
      
         Collection.List;
         
         import
      
      
         java.util.ArrayList;
      
      
        import
      
      
         java.util.ArrayList;
         import
      
      
         java.util.List;
      
      
        import
      
      
         java.util.List;
         import
      
      
         java.util.Map;
      
      
        import
      
      
         java.util.Map;
         
         public
      
      
         
      
      
        class
      
      
         Team 
      
      
      
        
          {
        
      
      
        public
      
      
         
      
      
        class
      
      
         Team 
      
      
      
        
          {
           private
        
        
           String id;
             
        
        
          private
        
        
           String id;
           private
        
        
           String teamname;
             
        
        
          private
        
        
           String teamname;
           private
        
        
           List students
        
        
          =
        
        
          new
        
        
           ArrayList();
             
        
        
          private
        
        
           List students
        
        
          =
        
        
          new
        
        
           ArrayList();
           public
        
        
           String getId() 
        
        
        
          
            {
          
        
        
          public
        
        
           String getId() 
        
        
        
          
            {
             return
          
          
             id;
                
          
          
            return
          
          
             id;
             }
            }
          
        
        
           public
        
        
           
        
        
          void
        
        
           setId(String id) 
        
        
        
          
            {
          
        
        
          public
        
        
           
        
        
          void
        
        
           setId(String id) 
        
        
        
          
            {
             this
          
          
            .id 
          
          
            =
          
          
             id;
                
          
          
            this
          
          
            .id 
          
          
            =
          
          
             id;
             }
            }
          
        
        
           public
        
        
           String getTeamname() 
        
        
        
          
            {
          
        
        
          public
        
        
           String getTeamname() 
        
        
        
          
            {
             return
          
          
             teamname;
                
          
          
            return
          
          
             teamname;
             }
            }
          
        
        
           public
        
        
           
        
        
          void
        
        
           setTeamname(String teamname) 
        
        
        
          
            {
          
        
        
          public
        
        
           
        
        
          void
        
        
           setTeamname(String teamname) 
        
        
        
          
            {
             this
          
          
            .teamname 
          
          
            =
          
          
             teamname;
                
          
          
            this
          
          
            .teamname 
          
          
            =
          
          
             teamname;
             }
            }
          
        
        
           public
        
        
           List getStudents() 
        
        
        
          
            {
          
        
        
          public
        
        
           List getStudents() 
        
        
        
          
            {
             return
          
          
             students;
                
          
          
            return
          
          
             students;
             }
            }
          
        
        
           public
        
        
           
        
        
          void
        
        
           setStudents(List students) 
        
        
        
          
            {
          
        
        
          public
        
        
           
        
        
          void
        
        
           setStudents(List students) 
        
        
        
          
            {
             this
          
          
            .students 
          
          
            =
          
          
             students;
                
          
          
            this
          
          
            .students 
          
          
            =
          
          
             students;
             }
            }
          
        
        
           
           }
          }
        
      
      
         
         
         
         package
      
      
         Collection.List;
      
      
        package
      
      
         Collection.List;
         
         public
      
      
         
      
      
        class
      
      
         Student 
      
      
      
        
          {
        
      
      
        public
      
      
         
      
      
        class
      
      
         Student 
      
      
      
        
          {
           private
        
        
           String id;
            
        
        
          private
        
        
           String id;
           private
        
        
           String name;
            
        
        
          private
        
        
           String name;
           private
        
        
           String description;
            
        
        
          private
        
        
           String description;
           private
        
        
           
        
        
          int
        
        
           age;
            
        
        
          private
        
        
           
        
        
          int
        
        
           age;
           private
        
        
           String cardid;
            
        
        
          private
        
        
           String cardid;
           private
        
        
           Team team;
            
        
        
          private
        
        
           Team team;
           public
        
        
           String getId() 
        
        
        
          
            {
          
        
        
          public
        
        
           String getId() 
        
        
        
          
            {
             return
          
          
             id;
                
          
          
            return
          
          
             id;
             }
            }
          
        
        
           public
        
        
           
        
        
          void
        
        
           setId(String id) 
        
        
        
          
            {
          
        
        
          public
        
        
           
        
        
          void
        
        
           setId(String id) 
        
        
        
          
            {
             this
          
          
            .id 
          
          
            =
          
          
             id;
                
          
          
            this
          
          
            .id 
          
          
            =
          
          
             id;
             }
            }
          
        
        
           public
        
        
           String getName() 
        
        
        
          
            {
          
        
        
          public
        
        
           String getName() 
        
        
        
          
            {
             return
          
          
             name;
                
          
          
            return
          
          
             name;
             }
            }
          
        
        
           public
        
        
           
        
        
          void
        
        
           setName(String name) 
        
        
        
          
            {
          
        
        
          public
        
        
           
        
        
          void
        
        
           setName(String name) 
        
        
        
          
            {
             this
          
          
            .name 
          
          
            =
          
          
             name;
                
          
          
            this
          
          
            .name 
          
          
            =
          
          
             name;
             }
            }
          
        
        
           public
        
        
           String getDescription() 
        
        
        
          
            {
          
        
        
          public
        
        
           String getDescription() 
        
        
        
          
            {
             return
          
          
             description;
                
          
          
            return
          
          
             description;
             }
            }
          
        
        
           public
        
        
           
        
        
          void
        
        
           setDescription(String description) 
        
        
        
          
            {
          
        
        
          public
        
        
           
        
        
          void
        
        
           setDescription(String description) 
        
        
        
          
            {
             this
          
          
            .description 
          
          
            =
          
          
             description;
                
          
          
            this
          
          
            .description 
          
          
            =
          
          
             description;
             }
            }
          
        
        
           public
        
        
           
        
        
          int
        
        
           getAge() 
        
        
        
          
            {
          
        
        
          public
        
        
           
        
        
          int
        
        
           getAge() 
        
        
        
          
            {
             return
          
          
             age;
                
          
          
            return
          
          
             age;
             }
            }
          
        
        
           public
        
        
           
        
        
          void
        
        
           setAge(
        
        
          int
        
        
           age) 
        
        
        
          
            {
          
        
        
          public
        
        
           
        
        
          void
        
        
           setAge(
        
        
          int
        
        
           age) 
        
        
        
          
            {
             this
          
          
            .age 
          
          
            =
          
          
             age;
                
          
          
            this
          
          
            .age 
          
          
            =
          
          
             age;
             }
            }
          
        
        
           public
        
        
           String getCardid() 
        
        
        
          
            {
          
        
        
          public
        
        
           String getCardid() 
        
        
        
          
            {
             return
          
          
             cardid;
                
          
          
            return
          
          
             cardid;
             }
            }
          
        
        
           public
        
        
           
        
        
          void
        
        
           setCardid(String cardid) 
        
        
        
          
            {
          
        
        
          public
        
        
           
        
        
          void
        
        
           setCardid(String cardid) 
        
        
        
          
            {
             this
          
          
            .cardid 
          
          
            =
          
          
             cardid;
                
          
          
            this
          
          
            .cardid 
          
          
            =
          
          
             cardid;
             }
            }
          
        
        
           public
        
        
           Team getTeam() 
        
        
        
          
            {
          
        
        
          public
        
        
           Team getTeam() 
        
        
        
          
            {
             return
          
          
             team;
                
          
          
            return
          
          
             team;
             }
            }
          
        
        
           public
        
        
           
        
        
          void
        
        
           setTeam(Team team) 
        
        
        
          
            {
          
        
        
          public
        
        
           
        
        
          void
        
        
           setTeam(Team team) 
        
        
        
          
            {
             this
          
          
            .team 
          
          
            =
          
          
             team;
                
          
          
            this
          
          
            .team 
          
          
            =
          
          
             team;
             }
            }
          
        
        
           }
          }
        
      
      
         
      
    
Team.hbm.xml
 <?
      
      
        xml version="1.0" encoding="utf-8"
      
      
        ?>
      
        <?
      
      
        xml version="1.0" encoding="utf-8"
      
      
        ?>
      
      
         <!
      
      
        DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
      
      
        <!
      
      
        DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
      
      
        >
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
      
      
        >
      
      
         <!--
      
      
        <!--
      
      
         
         Mapping file autogenerated by MyEclipse - Hibernate Tools
            Mapping file autogenerated by MyEclipse - Hibernate Tools
         -->
      
      
        -->
      
      
         <
      
      
        hibernate-mapping
      
      
        >
      
      
        <
      
      
        hibernate-mapping
      
      
        >
      
      
         <
      
      
        class 
      
      
        name
      
      
        ="Collection.List.Team"
      
      
         table
      
      
        ="teamList"
      
      
         
      
      
        >
      
      
        <
      
      
        class 
      
      
        name
      
      
        ="Collection.List.Team"
      
      
         table
      
      
        ="teamList"
      
      
         
      
      
        >
      
      
         <
      
      
        id 
      
      
        name
      
      
        ="id"
      
      
         unsaved-value
      
      
        ="null"
      
      
        >
            
      
      
        <
      
      
        id 
      
      
        name
      
      
        ="id"
      
      
         unsaved-value
      
      
        ="null"
      
      
        >
      
      
         <
      
      
        generator 
      
      
        class
      
      
        ="uuid.hex"
      
      
        ></
      
      
        generator
      
      
        >
              
      
      
        <
      
      
        generator 
      
      
        class
      
      
        ="uuid.hex"
      
      
        ></
      
      
        generator
      
      
        >
      
      
         </
      
      
        id
      
      
        >
            
      
      
        </
      
      
        id
      
      
        >
      
      
         <
      
      
        property 
      
      
        name
      
      
        ="teamname"
      
      
         type
      
      
        ="string"
      
      
         column
      
      
        ="teamname"
      
      
        ></
      
      
        property
      
      
        >
            
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="teamname"
      
      
         type
      
      
        ="string"
      
      
         column
      
      
        ="teamname"
      
      
        ></
      
      
        property
      
      
        >
      
      
         <!--
      
      
        由于index需要team来维护,所以,使用list表示1对多时候,不能再1方设置inverse="true"
      
      
        -->
            
      
      
        <!--
      
      
        由于index需要team来维护,所以,使用list表示1对多时候,不能再1方设置inverse="true"
      
      
        -->
      
      
         <
      
      
        list 
      
      
        name
      
      
        ="students"
      
      
         table
      
      
        ="studentList"
      
      
         cascade
      
      
        ="all"
      
      
         
      
      
        >
            
      
      
        <
      
      
        list 
      
      
        name
      
      
        ="students"
      
      
         table
      
      
        ="studentList"
      
      
         cascade
      
      
        ="all"
      
      
         
      
      
        >
      
      
         <
      
      
        key 
      
      
        column
      
      
        ="team_id"
      
      
        ></
      
      
        key
      
      
        >
              
      
      
        <
      
      
        key 
      
      
        column
      
      
        ="team_id"
      
      
        ></
      
      
        key
      
      
        >
      
      
         <!--
      
      
         index代表key,element(或one-to-many)代表value
      
      
        -->
              
      
      
        <!--
      
      
         index代表key,element(或one-to-many)代表value
      
      
        -->
      
      
         <!--
      
      
         这里用cardid作为key,具体的student实例作为value 
      
      
        -->
              
      
      
        <!--
      
      
         这里用cardid作为key,具体的student实例作为value 
      
      
        -->
      
      
         <
      
      
        index 
      
      
        column
      
      
        ="idx"
      
      
         type
      
      
        ="int"
      
      
        ></
      
      
        index
      
      
        >
              
      
      
        <
      
      
        index 
      
      
        column
      
      
        ="idx"
      
      
         type
      
      
        ="int"
      
      
        ></
      
      
        index
      
      
        >
      
      
         <
      
      
        one-to-many 
      
      
        class
      
      
        ="Collection.List.Student"
      
      
        />
              
      
      
        <
      
      
        one-to-many 
      
      
        class
      
      
        ="Collection.List.Student"
      
      
        />
      
      
         </
      
      
        list
      
      
        >
            
      
      
        </
      
      
        list
      
      
        >
      
      
         </
      
      
        class
      
      
        >
      
      
        </
      
      
        class
      
      
        >
      
      
         
         </
      
      
        hibernate-mapping
      
      
        >
      
      
        </
      
      
        hibernate-mapping
      
      
        >
      
      
         
      
    
Student.hbm.xml
 <?
      
      
        xml version="1.0" encoding="utf-8"
      
      
        ?>
      
        <?
      
      
        xml version="1.0" encoding="utf-8"
      
      
        ?>
      
      
         <!
      
      
        DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
      
      
        <!
      
      
        DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
         "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
      
      
        >
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
      
      
        >
      
      
         <!--
      
      
        <!--
      
      
         
         Mapping file autogenerated by MyEclipse - Hibernate Tools
            Mapping file autogenerated by MyEclipse - Hibernate Tools
         -->
      
      
        -->
      
      
         <
      
      
        hibernate-mapping
      
      
        >
      
      
        <
      
      
        hibernate-mapping
      
      
        >
      
      
         <
      
      
        class 
      
      
        name
      
      
        ="Collection.List.Student"
      
      
         table
      
      
        ="studentList"
      
      
         
      
      
        >
      
      
        <
      
      
        class 
      
      
        name
      
      
        ="Collection.List.Student"
      
      
         table
      
      
        ="studentList"
      
      
         
      
      
        >
      
      
         <
      
      
        id 
      
      
        name
      
      
        ="id"
      
      
         unsaved-value
      
      
        ="null"
      
      
        >
            
      
      
        <
      
      
        id 
      
      
        name
      
      
        ="id"
      
      
         unsaved-value
      
      
        ="null"
      
      
        >
      
      
         <
      
      
        generator 
      
      
        class
      
      
        ="uuid.hex"
      
      
        ></
      
      
        generator
      
      
        >
              
      
      
        <
      
      
        generator 
      
      
        class
      
      
        ="uuid.hex"
      
      
        ></
      
      
        generator
      
      
        >
      
      
         </
      
      
        id
      
      
        >
            
      
      
        </
      
      
        id
      
      
        >
      
      
         <
      
      
        property 
      
      
        name
      
      
        ="cardid"
      
      
         type
      
      
        ="string"
      
      
         column
      
      
        ="cardid"
      
      
        ></
      
      
        property
      
      
        >
            
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="cardid"
      
      
         type
      
      
        ="string"
      
      
         column
      
      
        ="cardid"
      
      
        ></
      
      
        property
      
      
        >
      
      
         <
      
      
        property 
      
      
        name
      
      
        ="name"
      
      
         type
      
      
        ="string"
      
      
         column
      
      
        ="name"
      
      
        ></
      
      
        property
      
      
        >
            
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="name"
      
      
         type
      
      
        ="string"
      
      
         column
      
      
        ="name"
      
      
        ></
      
      
        property
      
      
        >
      
      
         <
      
      
        property 
      
      
        name
      
      
        ="age"
      
      
         type
      
      
        ="int"
      
      
         column
      
      
        ="age"
      
      
        ></
      
      
        property
      
      
        >
            
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="age"
      
      
         type
      
      
        ="int"
      
      
         column
      
      
        ="age"
      
      
        ></
      
      
        property
      
      
        >
      
      
         <
      
      
        property 
      
      
        name
      
      
        ="description"
      
      
         type
      
      
        ="string"
      
      
         column
      
      
        ="description"
      
      
        ></
      
      
        property
      
      
        >
            
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="description"
      
      
         type
      
      
        ="string"
      
      
         column
      
      
        ="description"
      
      
        ></
      
      
        property
      
      
        >
      
      
         
         <
      
      
        many-to-one 
      
      
        name
      
      
        ="team"
            
      
      
        <
      
      
        many-to-one 
      
      
        name
      
      
        ="team"
      
      
         
         column
      
      
        ="team_id"
                         column
      
      
        ="team_id"
      
      
         class
      
      
        ="Collection.List.Team"
                         class
      
      
        ="Collection.List.Team"
      
      
         
         cascade
      
      
        ="none"
                         cascade
      
      
        ="none"
      
      
         
         fetch
      
      
        ="join"
      
      
        >
                         fetch
      
      
        ="join"
      
      
        >
      
      
         </
      
      
        many-to-one
      
      
        >
            
      
      
        </
      
      
        many-to-one
      
      
        >
      
      
         </
      
      
        class
      
      
        >
      
      
        </
      
      
        class
      
      
        >
      
      
         
         </
      
      
        hibernate-mapping
      
      
        >
      
      
        </
      
      
        hibernate-mapping
      
      
        >
      
      
         
      
    
Hibernate.cfg.xml
 <?
      
      
        xml version='1.0' encoding='UTF-8'
      
      
        ?>
      
        <?
      
      
        xml version='1.0' encoding='UTF-8'
      
      
        ?>
      
      
         <!
      
      
        DOCTYPE hibernate-configuration PUBLIC
      
      
        <!
      
      
        DOCTYPE hibernate-configuration PUBLIC
         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                  "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
      
      
        >
                  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
      
      
        >
      
      
         
         <!--
      
      
         Generated by MyEclipse Hibernate Tools.                   
      
      
        -->
      
      
        <!--
      
      
         Generated by MyEclipse Hibernate Tools.                   
      
      
        -->
      
      
         <
      
      
        hibernate-configuration
      
      
        >
      
      
        <
      
      
        hibernate-configuration
      
      
        >
      
      
         
         <
      
      
        session-factory
      
      
        >
      
      
        <
      
      
        session-factory
      
      
        >
      
      
         <
      
      
        property 
      
      
        name
      
      
        ="connection.username"
      
      
        >
      
      
        root
      
      
        </
      
      
        property
      
      
        >
            
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="connection.username"
      
      
        >
      
      
        root
      
      
        </
      
      
        property
      
      
        >
      
      
         <
      
      
        property 
      
      
        name
      
      
        ="connection.url"
      
      
        >
            
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="connection.url"
      
      
        >
      
      
         jdbc:mysql://localhost:3306/schoolproject?characterEncoding=gb2312
      
      
        &
      
      
        useUnicode=true
                jdbc:mysql://localhost:3306/schoolproject?characterEncoding=gb2312
      
      
        &
      
      
        useUnicode=true
         </
      
      
        property
      
      
        >
            
      
      
        </
      
      
        property
      
      
        >
      
      
         <
      
      
        property 
      
      
        name
      
      
        ="dialect"
      
      
        >
            
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="dialect"
      
      
        >
      
      
         org.hibernate.dialect.MySQLDialect
                org.hibernate.dialect.MySQLDialect
         </
      
      
        property
      
      
        >
            
      
      
        </
      
      
        property
      
      
        >
      
      
         <
      
      
        property 
      
      
        name
      
      
        ="myeclipse.connection.profile"
      
      
        >
      
      
        mysql
      
      
        </
      
      
        property
      
      
        >
            
      
      
        <
      
      
        property 
      
      
        name
      
      
        ="myeclipse.connection.profile"
      
      
        >
      
      
        mysql
      
      
        </
      
      
        property
      
      
        >
      
      
         <
      
      
        property&n
            
      
      
        <
      
      
        property&n
      
    


 
       
         
					 
					