我的数据库中有两个需要映射的表。第一个是学生表。它看起来像这样:
id
first_name
last_name
major_code_1
major_code_2
Major表是这样的:
id
description
我需要映射学生的专业代码,在哪里major_code_1
并major_code_2
指向id
专业表中的一个。我怎么能这样做?谢谢!
我的数据库中有两个需要映射的表。第一个是学生表。它看起来像这样:
id
first_name
last_name
major_code_1
major_code_2
Major表是这样的:
id
description
我需要映射学生的专业代码,在哪里major_code_1
并major_code_2
指向id
专业表中的一个。我怎么能这样做?谢谢!
这是一个映射到您的架构的简单模型:
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
由于您没有在问题中指定级联行为,因此我省略了所有和其他所有权字段。
代码看起来像(具有一对多关系:专业可以有很多学生):
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'
}
}