Problema para popular classe com relacionamentos com os dados vindos de formulário

Fala pessoal!

Estou tentando fazer uma pequena aplicação Spring com Hibernate. Estou com problema para inserir uma classe que tem relacionamentos.
Segue a definição dela abaixo:


// Generated Oct 16, 2012 9:26:52 AM by Hibernate Tools 3.4.0.CR1

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import static javax.persistence.GenerationType.IDENTITY;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * Livro generated by hbm2java
 */
@Entity
@Table(name = "livro", catalog = "db_livro")
public class Livro implements java.io.Serializable {

	private Long id;
	private Categoria categoria;
	private Autor autor;
	@Size(min = 5)
	@NotNull
	private String titulo;
	@NotNull
	@Size(min = 5)
	private String isbn;
	private Double precoAtual;
	private Double precoVenda;

	public Livro() {
	}

	public Livro(String titulo) {
		this.titulo = titulo;
	}

	public Livro(Categoria categoria, Autor autor, String titulo, String isbn,
			Double precoAtual, Double precoVenda) {
		this.categoria = categoria;
		this.autor = autor;
		this.titulo = titulo;
		this.isbn = isbn;
		this.precoAtual = precoAtual;
		this.precoVenda = precoVenda;
	}

	@Id
	@GeneratedValue(strategy = IDENTITY)
	@Column(name = "id", unique = true, nullable = false)
	public Long getId() {	
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "categoria_id")
	public Categoria getCategoria() {
		return this.categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "autor_id")
	public Autor getAutor() {
		return this.autor;
	}

	public void setAutor(Autor autor) {
		this.autor = autor;
	}

	@Column(name = "titulo", nullable = false, length = 45)
	public String getTitulo() {
		return this.titulo;
	}

	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}

	@Column(name = "isbn", length = 20)
	public String getIsbn() {
		return this.isbn;
	}

	public void setIsbn(String isbn) {
		this.isbn = isbn;
	}

	@Column(name = "preco_atual", precision = 22, scale = 0)
	public Double getPrecoAtual() {
		return this.precoAtual;
	}

	public void setPrecoAtual(Double precoAtual) {
		this.precoAtual = precoAtual;
	}

	@Column(name = "preco_venda", precision = 22, scale = 0)
	public Double getPrecoVenda() {
		return this.precoVenda;
	}

	public void setPrecoVenda(Double precoVenda) {
		this.precoVenda = precoVenda;
	}

}

Esse é o jsp que uso para inserir:
formulario.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"  %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	<title>Controle de Livros</title>
</head>
<body>
	<h3>Adicionar livros</h3>
	<form action="adicionaLivro" method="post">
		ISBN:<br />
		<input type="text" name="isbn" />
		<!--<form:errors path="livro.isbn" cssStyle="color: red;" />-->
		<br />
		
		Categoria:<br />
		<select name="categoria" id="categoria">
			<c:forEach items="${categorias}" var="categoria">
				<option value="${categoria.id}">${categoria.nome}</option>
			</c:forEach>	
		</select>
		
		<!--<form:errors path="livro.categoria" cssStyle="color: red;" />-->
		<br />	

		Título:<br />
		<input type="text" name="titulo" />
		<!--<form:errors path="livro.titulo" cssStyle="color: red;" />-->
		<br />
		
		Autor:<br />
		<select name="autor" id="autor">
			<c:forEach items="${autores}" var="autor">
				<option value="${autor.id}">${autor.nome}</option>
			</c:forEach>	
		</select>
		<!--<form:errors path="livro.autor" cssStyle="color: red;" />-->
		<br />	
		
		Preço Atual:<br />
		<input type="text" name="precoAtual" />
		<!--<form:errors path="livro.precoAtual" cssStyle="color: red;" />-->
		<br />
		
		Preço Venda:<br />
		<input type="text" name="precoVenda" />
		<!--<form:errors path="livro.precoVenda" cssStyle="color: red;" />-->
		<br />		
					
		<input type="submit" value="Adicionar"/>
	</form>
</body>
</html>[/code]
Quando tento inserir acontece este erro:
[code]SEVERE: Servlet.service() for servlet springmvc threw exception
org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors
Field error in object 'livro' on field 'autor': rejected value [7]; codes [typeMismatch.livro.autor,typeMismatch.autor,typeMismatch.br.com.coldsoft.livros.model.Autor,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [livro.autor,autor]; arguments []; default message [autor]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'br.com.coldsoft.livros.model.Autor' for property 'autor'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [br.com.coldsoft.livros.model.Autor] for property 'autor': no matching editors or conversion strategy found]
	at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doBind(HandlerMethodInvoker.java:810)
	at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:359)
	at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
	at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:436)
	at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:669)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:585)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)

Não sei se é isso, mas me parece que está dando erro de “tipos misturados” para o objeto Autor em relação ao que está vindo do formulário. Alguém tem alguma dica de como resolver isso?

Obrigado!

Pessoal, o resumo do meu problema então é:
A entidade Livro tem 2 Chaves Estrangeiras (Categoria e Autor). O meu problema é converter os dados do formulário de Inserção de Livro que populo com 2 combos (id categoria e id Autor) nesses dois objetos que serâo criados dentro de livro (Categoria e Autor).
E o erro:

org.springframework.validation.BindException: org.springframework.validation.BeanPropertyBindingResult: 1 errors Field error in object 'livro' on field 'autor': rejected value [7]; codes [typeMismatch.livro.autor,typeMismatch.autor,typeMismatch.br.com.coldsoft.livros.model.Autor,typeMismatch]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [livro.autor,autor]; arguments []; default message [autor]]; default message [Failed to convert property value of type 'java.lang.String' to required type 'br.com.coldsoft.livros.model.Autor' for property 'autor'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [br.com.coldsoft.livros.model.Autor] for property 'autor': no matching editors or conversion strategy found]
Alguém já passou por uma situação parecida?

Alguém?