Я могу сделать простое приложение grails в 2.4.4, но как только я добавлю статическое сопоставление, которое изменяет имя первичного ключа, оно отказывается сохранять. Вот класс домена, который я использую.Сопротивление типа шаблонов Grails при сохранении
class Liaison {
String first;
String last;
static constraints = {}
static mapping = {
id column:'liaisonId', type: 'integer'
}
}
здесь генерируемый контроллер
import static org.springframework.http.HttpStatus.*
import grails.transaction.Transactional
@Transactional(readOnly = true)
class LiaisonController {
static allowedMethods = [save: "POST", update: "PUT", delete: "DELETE"]
def index(Integer max) {
params.max = Math.min(max ?: 10, 100)
respond Liaison.list(params), model:[liaisonInstanceCount: Liaison.count()]
}
def show(Liaison liaisonInstance) {
respond liaisonInstance
}
def create() {
respond new Liaison(params)
}
@Transactional
def save(Liaison liaisonInstance) {
if (liaisonInstance == null) {
notFound()
return
}
if (liaisonInstance.hasErrors()) {
respond liaisonInstance.errors, view:'create'
return
}
liaisonInstance.save flush:true
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.created.message', args: [message(code: 'liaison.label', default: 'Liaison'), liaisonInstance.id])
redirect liaisonInstance
}
'*' { respond liaisonInstance, [status: CREATED] }
}
}
def edit(Liaison liaisonInstance) {
respond liaisonInstance
}
@Transactional
def update(Liaison liaisonInstance) {
if (liaisonInstance == null) {
notFound()
return
}
if (liaisonInstance.hasErrors()) {
respond liaisonInstance.errors, view:'edit'
return
}
liaisonInstance.save flush:true
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.updated.message', args: [message(code: 'Liaison.label', default: 'Liaison'), liaisonInstance.id])
redirect liaisonInstance
}
'*'{ respond liaisonInstance, [status: OK] }
}
}
@Transactional
def delete(Liaison liaisonInstance) {
if (liaisonInstance == null) {
notFound()
return
}
liaisonInstance.delete flush:true
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.deleted.message', args: [message(code: 'Liaison.label', default: 'Liaison'), liaisonInstance.id])
redirect action:"index", method:"GET"
}
'*'{ render status: NO_CONTENT }
}
}
protected void notFound() {
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'liaison.label', default: 'Liaison'), params.id])
redirect action: "index", method: "GET"
}
'*'{ render status: NOT_FOUND }
}
}
}
Я получаю сообщение об ошибке при liaisonInstance.save флеша: правда в Защиту сохранить(), но я не понимаю, почему. Если я посмотрю в своем журнале изменений, таблица выглядит нормально. Это какая-то скрытая карта хэша? Любая помощь будет большой.