Validação hibernate

Pessoal, estou com um problema quando coloco validação do hibernate.

Classe Produto

package br.com.caelum.goodbuy.modelo;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

import org.hibernate.validator.Length;
import org.hibernate.validator.Min;
import org.hibernate.validator.NotNull;


@Entity
public class Produto {
	
	@Id @GeneratedValue
	private Long id;
	
	@NotNull
	@Length(min=3)
	private String nome;
	
	@NotNull
	@Length(min=20)
	private String descricao;
	
	@Min(0)
	private Double preco;

	public Long getId() {
		return id;
	}

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

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Double getPreco() {
		return preco;
	}

	public void setPreco(Double preco) {
		this.preco = preco;
	}
	
	

}

Meu método adiciona() na classe ProdutoController

public void adiciona(final Produto produto){
		validator.validate(produto);
		validator.onErrorUsePageOf(ProdutosController.class).formulario();
		dao.salva(produto);
		result.redirectTo(ProdutosController.class).lista();
	}

E o erro que apresenta:

[i]
HTTP Status 500 - your controller raised an exception

type Exception report

message your controller raised an exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: your controller raised an exception
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:103)
root cause

org.hibernate.validator.InvalidStateException: validation failed for: br.com.caelum.goodbuy.modelo.Produto
org.hibernate.validator.event.ValidateEventListener.validate(ValidateEventListener.java:148)
org.hibernate.validator.event.ValidateEventListener.onPreInsert(ValidateEventListener.java:172)
org.hibernate.action.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java:119)
org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:42)
org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290)
org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:180)
org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:108)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
br.com.caelum.goodbuy.dao.ProdutoDao.salva(ProdutoDao.java:22)
[/i]

Poderiam me ajudar nessa?