我的数据库中有两个需要映射的表。第一个是学生表。它看起来像这样:
id
first_name
last_name
major_code_1
major_code_2
Major 表格如下:
id
description
我需要映射学生的主要代码,其中major_code_1
和major_code_2
指向主要表格中的id
。我怎么能这样做?谢谢!
答案 0 :(得分: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
和其他所有权字段,因为您未在问题中指定级联行为。
答案 1 :(得分:0)
代码看起来像(一对多的关系:Major可以有很多学生):
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'
}
}
但是,请你解释一下这两张桌子的想法。因为在名为Student的Major Entity之间看起来像很多很多的递归关系。我想知道你不应该在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'
}
}