【发布时间】:2014-02-25 16:07:47
【问题描述】:
这是一个菜鸟问题,我知道,我很抱歉。我正在尝试使用 Hibernates session.merge() 方法编辑现有记录,但出现以下错误:
java.lang.IllegalArgumentException: id to load is required for loading
这是我的对象:
@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
这是服务层方法:
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);
}
这是控制器的 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";
}
}
我错过了什么?任何帮助将不胜感激。
【问题讨论】:
-
你是对的@PaulHicks,
title.getTitleId()为空!但我不知道为什么... -
将我的评论升级为答案
-
在这个网站上,您必须先道歉才能提出问题,这是一种耻辱。
标签: hibernate spring-mvc