Esse erro ocorria ao tentar editar um produto. Tentei todas as soluções do forum e nenhuma deu certo, então decidi copiar o que é feito com o método buscarPor da classe ProdutoController.
Na classe ProdutoController, o que era assim:
@Transactional
@RequestMapping(method=RequestMethod.POST, name="cadastraProduto")
public String salvar(@ModelAttribute @Valid Produto produto, BindingResult result, RedirectAttributes atts) {
Ficou assim:
@Transactional
@RequestMapping(value="/cadastrar", method=RequestMethod.POST, name="buscarProdutos")
public String salvar(@ModelAttribute @Valid Produto produto, BindingResult result, RedirectAttributes atts) {
No arquivo form.jsp, o que era assim:
<form action="${spring:mvcUrl('cadastraProduto').build()}" method="post">
Ficou assim:
<form class="form-group" method="post" action="<c:url value="/produto/cadastrar"/>">
O código original foi baixado dessa mesma atividade. Esse problema tem causado muita confusão nessa aula e o objetivo desse curso nem é entender Spring, mas sim JPA e Hibernate. Sugiro a correção do código e uma atualização da transcrição do vídeo.
PS: minha solução funciona para editar e salvar o produto, mas não sei se é a solução ideal ou se mesmo está correta.