Reputation: 129
Below are the two tables with their fields:
GuiaDocente: id, curso, modalidad, asignatura_ing
Materia: id, guia_docente_id, modulo, materia, caracter, creditos, unidad_temporal, profesor_asignatura, email, horario_atencion, coordinador_curso, coordinador_modulo
The type of relationship is 'one to one'.
I want to insert all the data and foreign key "guide_docente_id" in the table "Materia". Below, it was show the code...
class InsercionService {
def insercionMateria(guia_docente_id, modulo, materia, caracter, creditos, unidad_temporal, profesor_asignatura, email,horario_atencion, coordinador_curso, coordinador_modulo){
def insertMateria = new Materia(guia_docente_id: guia_docente_id, modulo: modulo, materia: materia,
caracter: caracter, creditos: creditos, unidad_temporal: unidad_temporal,
profesor_asignatura: profesor_asignatura, email: email, horario_atencion:horario_atencion,
coordinador_curso: coordinador_curso, coordinador_modulo: coordinador_modulo)
insertMateria.save(failOnError: true)
}
}
However, it shows me an insertion error...
Validation Error(s) occurred during save(): - Field error in object 'generacionGuiasDocentes.guiaDocente.Materia' on field 'guiaDocente': rejected value [null]; codes [generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable.error.generacionGuiasDocentes.guiaDocente.Materia.guiaDocente,generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable.error.guiaDocente,generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable.error.generacionGuiasDocentes.guiaDocente.GuiaDocente,generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable.error,materia.guiaDocente.nullable.error.generacionGuiasDocentes.guiaDocente.Materia.guiaDocente,materia.guiaDocente.nullable.error.guiaDocente,materia.guiaDocente.nullable.error.generacionGuiasDocentes.guiaDocente.GuiaDocente,materia.guiaDocente.nullable.error,generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable.generacionGuiasDocentes.guiaDocente.Materia.guiaDocente,generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable.guiaDocente,generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable.generacionGuiasDocentes.guiaDocente.GuiaDocente,generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable,materia.guiaDocente.nullable.generacionGuiasDocentes.guiaDocente.Materia.guiaDocente,materia.guiaDocente.nullable.guiaDocente,materia.guiaDocente.nullable.generacionGuiasDocentes.guiaDocente.GuiaDocente,materia.guiaDocente.nullable,nullable.generacionGuiasDocentes.guiaDocente.Materia.guiaDocente,nullable.guiaDocente,nullable.generacionGuiasDocentes.guiaDocente.GuiaDocente,nullable]; arguments [guiaDocente,class generacionGuiasDocentes.guiaDocente.Materia]; default message [La propiedad [{0}] de la clase [{1}] no puede ser nulo]
Caused by: grails.validation.ValidationException: Validation Error(s) occurred during save(): - Field error in object 'generacionGuiasDocentes.guiaDocente.Materia' on field 'guiaDocente': rejected value [null]; codes [generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable.error.generacionGuiasDocentes.guiaDocente.Materia.guiaDocente,generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable.error.guiaDocente,generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable.error.generacionGuiasDocentes.guiaDocente.GuiaDocente,generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable.error,materia.guiaDocente.nullable.error.generacionGuiasDocentes.guiaDocente.Materia.guiaDocente,materia.guiaDocente.nullable.error.guiaDocente,materia.guiaDocente.nullable.error.generacionGuiasDocentes.guiaDocente.GuiaDocente,materia.guiaDocente.nullable.error,generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable.generacionGuiasDocentes.guiaDocente.Materia.guiaDocente,generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable.guiaDocente,generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable.generacionGuiasDocentes.guiaDocente.GuiaDocente,generacionGuiasDocentes.guiaDocente.Materia.guiaDocente.nullable,materia.guiaDocente.nullable.generacionGuiasDocentes.guiaDocente.Materia.guiaDocente,materia.guiaDocente.nullable.guiaDocente,materia.guiaDocente.nullable.generacionGuiasDocentes.guiaDocente.GuiaDocente,materia.guiaDocente.nullable,nullable.generacionGuiasDocentes.guiaDocente.Materia.guiaDocente,nullable.guiaDocente,nullable.generacionGuiasDocentes.guiaDocente.GuiaDocente,nullable]; arguments [guiaDocente,class generacionGuiasDocentes.guiaDocente.Materia]; default message [La propiedad [{0}] de la clase [{1}] no puede ser nulo]
Below are the codes...
Controller:
class GuiaDocenteController {
def insercionMateria(){
def idGuiaDocente = params.id
def modulo = params.modulo
def materia = params.materia
def caracter = params.caracter
def creditos = params.creditos
def unidad_temporal = params.unidad_temporal
def profesor_asignatura = params.profesor_asignatura
def email = params.email
def horario_atencion = params.horario_atencion
def coordinador_curso = params.coordinador_curso
def coordinador_modulo = params.coordinador_modulo
def insercionMateria = insercionService.insercionMateria(idGuiaDocente, modulo, materia, caracter, creditos,
unidad_temporal, profesor_asignatura, email, horario_atencion, coordinador_curso, coordinador_modulo)
render insercionMateria as JSON
}
}
jQuery:
$(document).ready(function () {
//--- asignatura ---
$(".btnActualizaAsignatura").click(function () {
for (instance in CKEDITOR.instances) {
CKEDITOR.instances[instance].updateElement();
}
URL = enlaceObjetos.urlIdAsignatura;
URL2 = enlaceObjetos.urlInsercionAsignatura;
URL3 = enlaceObjetos.urlActualizacionAsignatura;
actualizaFormulario(URL, URL2, URL3);
})
});
function actualizaFormulario(URL, URL2, URL3) {
var datos, idGuiaDocente, idParam;
idGuiaDocente = localStorage.getItem("idGuiaDocente");
idParam = $.param({id: idGuiaDocente});
datos = $("#idFormulario").serialize() + "&" + idParam;
alert("El resultado es: " + idGuiaDocente);
alert("Datos: " + datos);
peticionConDatosCallBackAjax(URL, parseInt(datos), function (data){
if(data.toString() === ""){
//se inserta
alert("El dato es: " + data);
//*** - insert data in the table Materia - ***
peticionConDatosCallBackAjax(URL2, datos, function (data){
if(data.toString()){
alert("Success");
//muestra un 'Toast' en pantalla'
//showToast();
}
});
}else{
//se actualiza
alert("Existe el dato: " + data);
}
});
}
Domain "GuiaDocente"
class GuiaDocente {
String curso
String modalidad
String asignatura_ing
static belongsTo = [asignatura:Asignatura]
static hasOne = [materia:Materia]
static constraints = {
curso blank: false
modalidad blank: false
asignatura_ing nullable: true
materia nullable: true
}
}
Domain "Materia"
class Materia {
String modulo
String materia
String caracter
String creditos
String unidad_temporal
String profesor_asignatura
String email
String horario_atencion
String coordinador_curso
String coordinador_modulo
static belongsTo = [guiaDocente:GuiaDocente]
static constraints = {
modulo nullable: true
materia nullable: true
caracter nullable: true
creditos nullable: true
unidad_temporal nullable: true
profesor_asignatura nullable: true
email nullable: true
horario_atencion nullable: true
coordinador_curso nullable: true
coordinador_modulo nullable: true
}
}
Upvotes: 1
Views: 113
Reputation: 1648
Change your service code to:
def insercionMateria(guia_docente_id, modulo, materia, caracter, creditos, unidad_temporal, profesor_asignatura, email,horario_atencion, coordinador_curso, coordinador_modulo){
GuiaDocente guiaDocement = GuiaDocente.read(guia_docente_id)
def insertMateria = new Materia(guiaDocente: guiaDocement, modulo: modulo, materia: materia,
caracter: caracter, creditos: creditos, unidad_temporal: unidad_temporal,
profesor_asignatura: profesor_asignatura, email: email, horario_atencion:horario_atencion,
coordinador_curso: coordinador_curso, coordinador_modulo: coordinador_modulo)
insertMateria.save(failOnError: true)
}
There is no such field as guia_docente_id
in Material
class. Based on your belongsTo you have guiaDocente
as object which will generate guiaDocente_id
instead of guia_docente_id
in this class. You can use object.properties to see all properties of object in groovy
Upvotes: 1