Il y a tellement de problèmes avec l'extrait de code, je vais essayer de vous aider à comprendre comment mettre tous les éléments ci-dessus dans une bien meilleure façon, en écrivant les choses d'une manière confuse. « t va le rendre plus facile pour vous de débogage:
// You are createing a list in which you query Employee.findAll
List<Employee> employee=Employee.findAllById(session.getAttribute("empID"))
//But inside this list you are only looking for that 1 id.
Votre liste ci-dessus contient toujours 1 élément. Vous utilisez findById qui est vraiment pas nécessaire si vous connaissez l'ID que vous pouvez juste faire
Employee.get(session.getAttribute("empID") as Long)
//You are then creating employeeMilestone
EmployeeMilestone employeeMilestone=new EmployeeMilestone()
//Then without checking your 1 list result you are directly attempting to get the first element
employeeMilestone.setEmployee(employee.get(0))
permet donc essayer à nouveau:
def save(){
def milestone=new Milestone(params)
milestone.save()
//Do you even have something in your session?
if (session.getAttribute("empID")) {
println "yes we have ${session.getAttribute("empID")}"
Employee employee=Employee.get(session.getAttribute("empID") as Long)
if (employee) {
println "yes we have eployee ${employee?.id}
EmployeeMilestone employeeMilestone=new EmployeeMilestone()
employeeMilestone.employee=eployee
employeeMilestone.milestone=milestone
employeeMilestone.save()
redirect(action: "show",id: employeeMilestone.id)
} else {
println "No employee found"
}
} else {
println "session could not be found"
}
}
Espérons que cela ne permet pas à une 4ème tentative de Le fait que vous ayez du code de redirection dans les actions suggère que vous faites tout ce qui est indiqué ci-dessus dans un contrôleur, ce qui est encore plus faux.
Les tâches transactionnelles d'un service font-elles partie du contrôleur dans un contrôleur et affichent-elles les données à afficher.
Copie possible de [À propos de l'enregistrement des données dans la base de données Grails] (https://stackoverflow.com/questions/45095609/about-saving-data-into-grails-databse) – Daniel
Ceci est juste une copie de https: // stackoverflow.com/questions/45095609/about-saving-data-into-grails-databse pour lequel vous avez déjà accepté une réponse. – Daniel
Texte correctement formé – litelite