代码之家  ›  专栏  ›  技术社区  ›  Daniel Bingham

在Hibernate中正确实现一对多单向关系

  •  1
  • Daniel Bingham  · 技术社区  · 16 年前

    下面是我试图映射的Java对象类型的一个(极其简化的)示例:

    public class Student {
        private List<StudentGrade> grades;
    
    }
    
    public class StudentGrade {
        private char letterGrade;
        private double percentageGrade;
    }
    

    所以问题是,如何编写hbm.xml文件来映射它?

    <many-to-one name="StudentGrade" column="grade_id" />
    

    但是,它只显示映射文件,而不显示它附带的Java对象。在映射文件中,多对一元素与其他属性一起列出。它不包含在列表或集合元素中。在其他地方,它确实显示了使用集合的Java对象(在本例中是作为哈希表实现的集合),它有一个如下所示的映射文件:

    <set name="events" table="PERSON_EVENT">
        <key column="PERSON_ID"/>
        <many-to-many column="EVENT_ID" class="Event"/>
    </set>
    

    这也是我在许多问题中看到的。那么正确的方法是什么呢?

    1 回复  |  直到 16 年前
        1
  •  1
  •   skaffman    16 年前

    您引用的两个示例是多对一和多对多映射,这两种映射都不适用于您的模型。您需要一对多映射。

    考虑到你的 Student StudentGrade 学生 :

    <list name="grades">
       <list-index column="idx"/>
    </list>
    

    您还需要的类映射 学生年级 .

    the docs for instructions 关于如何映射包、集合、映射、列表等。