我刚刚陷入我的Web Spring应用程序的问题。我添加了一个方法deleteById,该方法在MessageRepo中声明,该方法从CRUDRepository扩展。该方法可以完美工作,并且可以重定向到我的“主页”页面,但是我的MySQL数据库没有任何变化。希望任何人都可以回答我我的应用程序有什么问题。随时回答。在控制器中向下查看以下此方法
@PostMapping("/main/{id}")
public String delete(@PathVariable(value = "id") Long id) {
messageRepo.deleteById(id);
return "redirect:/main";
}
这是我的消息在带有删除所有内容的按钮的视图中的样子。
<#list messages as message>
<div class="task-card">
<p class="task-card-p">${message.text}</p>
<form method="post" action="/main/${message.id}">
<input type="hidden" name="_csrf" value="${_csrf.token}"/>
<button type="submit" class="task-card-btn">delete</button>
</form>
</div>
</#list>
这是我的留言回购。没有任何方法导致我扩展了crudRepo。
public interface MessageRepo extends CRUDRepository<Message, Long> {
}
您必须在控制器的delete方法上添加@Transactional
批注。您必须导入org.springframework.transaction.annotation.Transactional
才能使用此注释。还要确保在Message类中添加getter和setter。该解决方案将为您完成工作,但是作为一个好的实践,您应该在Controller和Repo Class之间添加一个服务层。将执行数据库操作的Service类的所有方法标记为@Transactional
。