Spring MVC + Hibernate: l'identifiant à charger est requis pour le chargement
C'est une question de noob, je sais et je m'en excuse. Je suis en train de modifier des enregistrements existants avec Hiberne session.la méthode merge() et j'obtiens l'erreur suivante:
java.lang.IllegalArgumentException: id to load is required for loading
C'est mon objet:
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "TITLE_ID", unique = true, nullable = false)
private Integer titleId;
@NotNull
@NotBlank
@Column(name = "TITLE_DESCRIPTION", nullable = false, length = 10)
private String titleDescription;
//default constructor, getters & setters
C'est la couche de service méthode:
public void edit(Title title) {
logger.debug("Editing existing title");
//Retrieve session from Hibernate
Session session = sessionFactory.getCurrentSession();
//Retrieve existing title via id
Title existingTitle = (Title) session.get(Title.class, title.getTitleId());
//Assign updated values to this title
existingTitle.setTitleDescription(title.getTitleDescription());
//Save updates
session.merge(existingTitle);
}
C'est le contrôleur de la méthode POST:
@RequestMapping(value="/edit", method = RequestMethod.POST)
public String postEditTitle(@Valid @ModelAttribute("titleAttribute") Title title,
BindingResult result) {
logger.debug("Received request to edit title");
if (result.hasErrors()) {
return "editTitle";
}
else {
titleService.edit(title);
return "redirect:/essays/main/title";
}
}
Ce qui me manque? Toute aide sera très appréciée.
source d'informationauteur just_a_girl
Vous devez vous connecter pour publier un commentaire.
Le problème n'est pas avec Hibernate.
title.getTitleId()
est nulle lorsque vous passez àsession.get()
et c'est un problème avec votre service web/de l'application.Vous pouvez fournir plus de détails ici, ou poser une nouvelle question, si vous éprouvez des difficultés à retenir les attributs à travers le web, de repos ou de WS session.