Мне интересно, могу ли я изменить значение первичный ключ член составного первичного ключа в классе класса Grails? Например, имеющих этот домен:Обновление значения первичного ключа в grails gorm
class StudentHistory implements Serializable {
String studentNumber
String schoolYear
Integer yearLevel
String section
Float average
String status
static mapping = {
...
id composite: ["studentNumber", "schoolYear", "yearLevel", "section"]
...
}
}
Пусть говорят, О schoolYear: "2014-2015"
, определенного yearLevel: 1
студента с studentNumber: "2011-488-MN-0"
переданного участка от section: "1D"
к section: "1N"
. Теперь, чтобы выполнить это обновление записи, мы делаем что-то подобное внутри service
:
StudentHistory record = StudentHistory.find {
eq("studentNumber", "2014-488-MN-0")
eq("schoolYear", "2014-2015")
eq("yearLevel", 1)
eq("section", "1D")
}
record.setSection("1N")
record.save(flush: true, insert: false)
Проблема заключается в том, что обновление первичного ключа не вступает в силу, но когда я пытался обновить другие несырьевые поля, такие как average
и status
, обновление их работает нормально (я попытался выполнить SQL
непосредственно в базе данных для подтверждения). Как я могу обновить первичные ключи?
PS: Теперь, на основании этой конструкции, я знаю, что некоторые предполагают, что почему бы не просто создать еще одну запись, то просто принести запись, которая была последней введенной? Но то, что мне нужно - , - это обновить этот составной первичный ключ.
PPS: Пожалуйста, не предложить на удаление старого экземпляра, и создать новый, копируя старые детали для section
кроме. Я не могу этого сделать, поскольку многие таблицы подключены к этой таблице.
Не могли бы вы уточнить: «обновление первичного ключа не вступает в силу». Как вы подтверждаете, что он не вступил в силу? И не могли бы вы также сказать, является ли вышеуказанный код службой или контроллером. Благодарю. :) –
@IStevenson Я выполнил обновление (внутри службы) в первичных и не первичных полях, проверяя БД, если он работает. Обновление первичного поля на grails не работает, по сравнению с обновлением не первичного поля. – Gideon