0

我的数据库中有两个需要映射的表。第一个是学生表。它看起来像这样:

id
first_name
last_name
major_code_1
major_code_2

Major表是这样的:

id
description

我需要映射学生的专业代码,在哪里major_code_1major_code_2指向id专业表中的一个。我怎么能这样做?谢谢!

4

2 回答 2

3

这是一个映射到您的架构的简单模型:

class Student {
    String firstName
    String lastName
    Major firstMajor
    Major secondMajor

    static mapping = {
        table 'Student'
        firstMajor column: 'major_code_1'
        secondMajor column: 'major_code_2'
    }
}

class Major {
    String description

    static mapping = {
        table 'Major'
    }
}

belongsTo由于您没有在问题中指定级联行为,因此我省略了所有和其他所有权字段。

于 2013-07-16T14:15:32.530 回答
0

代码看起来像(具有一对多关系:专业可以有很多学生):

class Student{

    Long id 
    String first_name
    String last_name

    static belongsTo = [
            major_code_1: Major
            , major_code_2: Major
    ]

    static mapping = {
        table 'Student'
    }

}


class Major{

    Long id 
    String description

    static hasMany = [
        student_1: Student
        , student_2: Student
    ]

    static mappedBy = [
            student_1: 'major_code_1'
            , student_2: 'major_code_2'
    ]

    static mapping = {
        table 'Major'
    }

}

但是你能解释一下这两张桌子的想法吗?因为它看起来像是主要实体之间的多对多递归关系,称为学生。我想知道您是否不应该在 Major 表中包含 student_code_1 和 student_code_2。

- - - - - - - - - - - - - - - - 编辑 - - - - - - - - - -------------------------------------------

具有多对一关系(许多学生具有相同的专业)

class Student{

    Long id 
    String first_name
    String last_name

    Major major_code_1
    Major major_code_2

    static mapping = {
        table 'Student'
    }

}


class Major{

    Long id 
    String description

    static belongsTo = [
        student_1: Student
        , student_2: Student
    ]

    static mappedBy = [
            student_1: 'major_code_1'
            , student_2: 'major_code_2'
    ]

    static mapping = {
        table 'Major'
    }

}
于 2013-07-16T13:30:49.747 回答