Код может выглядеть (с один-ко-многим отношениям: майор может иметь много студентов):
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 Entity, которое называется Student. Интересно, если вы не должны иметь 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'
}
}
В основном объект-ученик может иметь две специальности ... major1, major2. В базе данных major_code_1 и major_code_2 у учащегося - это всего лишь код, указывающий на основную таблицу. Оттуда вы можете получить основное описание (Computer Information Science, Economics и т. Д.) Будучи университетом, это устаревшая база данных, поэтому, если она не хорошо отображает классы домена Grails, то хорошо. – grantmcconnaughey
Теперь я понимаю. Поэтому код из моего ответа должен работать нормально. Вы можете добавить ограничение только для класса Student, чтобы не иметь двух одинаковых специальностей для одного ученика. – kpater87
Будет ли это немного изменяться, если Студент находится на стороне владельца? – grantmcconnaughey