[RESOLVIDO] java.lang.IllegalArgumentException: id to load is required for loading

Falaê Galera!
Já dei uma pesquisada aqui no forum antes… mas não achei um problema parecido igual esse meu.
Seguinte:
Preciso fazer um módulo de agendamento de consultas em um sistema que eu estou fazendo, nele eu coloco uma string que é o nome do paciente, instancio uma lista de médicos dentro de uma combobox pra selecionar qual será o médico da consulta, e tenho o campo pra data, pra hora e o status… aí ele inclui normalmente e aparece na lista e remove normalmente, ou seja, o id está sendo carregado… o que eu estou achando estranho que quando eu clico pra alterar ele carrega o form com os dados do agendamento normalmente, mas quando eu clico em alterar ele dá o seguinte erro:

java.lang.IllegalArgumentException: id to load is required for loading
	org.hibernate.event.LoadEvent.<init>(LoadEvent.java:89)
	org.hibernate.event.LoadEvent.<init>(LoadEvent.java:61)
	org.hibernate.impl.SessionImpl.load(SessionImpl.java:974)
	org.hibernate.impl.SessionImpl.load(SessionImpl.java:970)
	br.com.sisclinic.dao.AgendaConsultaDAO.carregaAgendamento(AgendaConsultaDAO.java:50)
	br.com.sisclinic.controller.AgendaConsultaController.edita(AgendaConsultaController.java:62)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:86)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.sisclinic.interceptor.NoCacheInterceptor.intercept(NoCacheInterceptor.java:41)
	br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.sisclinic.interceptor.AccesControllerInterceptor.intercept(AccesControllerInterceptor.java:53)
	br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.util.jpa.JPATransactionInterceptor.intercept(JPATransactionInterceptor.java:48)
	br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129)
	com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77)

Minhas Classes:

AgendaConsulta:

@Entity
public class AgendaConsulta {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id_agendaconsulta")
	private Long id;
	
	private String paciente;
	
	@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
	private Medico medico;
	
	@Temporal(TemporalType.DATE)
	@DateTimeFormat(pattern = "dd/MM/yyyy")
	@Column(name = "data_consulta")
	private Date dataConsulta;
	
	@Column(name = "hora_consulta")
	private String horaConsulta;
	
	@Column(name = "status_consulta")
	private String statusConsulta; //Agendada, Cancelada, Realizada

        //Construtores, Getters e Setters
}

AgendaConsultaDAO:

@Component
@RequestScoped
public class AgendaConsultaDAO {
	//...

	public void atualiza(AgendaConsulta agendaConsulta) {
		Transaction tx = session.beginTransaction();
		session.update(agendaConsulta);
		tx.commit();
	}
	
	@SuppressWarnings("unchecked")
	public List<AgendaConsulta> listaAgendamentos() {
		return session.createCriteria(AgendaConsulta.class).list();
	}
	
	public AgendaConsulta carregaAgendamento(Long id) {
		return (AgendaConsulta) this.session.load(AgendaConsulta.class, id);
	}
        
        //...
}

AgendaConsultaController:

@Resource
@Roles(roles = "admin")
public class AgendaConsultaController {
	private Result result;
	private Validator validator;
	private AgendaConsultaDAO agendaConsultaDAO;
	private MedicoDAO medicoDAO;
	
	public AgendaConsultaController(Result result, Validator validator,
			AgendaConsultaDAO agendaConsultaDAO, MedicoDAO medicoDAO) {
		this.result = result;
		this.validator = validator;
		this.agendaConsultaDAO = agendaConsultaDAO;
		this.medicoDAO = medicoDAO;
	}
	
	
	@Path("/agendaConsulta")
	public void lista() {
		result.include("agendaConsultas", agendaConsultaDAO.listaAgendamentos());
	}
	
	public AgendaConsulta edita(Long id) {
		result.include("medicos", medicoDAO.listaMedicos());
		return agendaConsultaDAO.carregaAgendamento(id);
	}
	
	public void atualiza(final AgendaConsulta agendaConsulta) {
		validator.checking(new Validations() {{
			that(!agendaConsulta.getPaciente().trim().isEmpty(), 
					"agendaConsulta.paciente", "pacienteAgendaConsulta.vazio");
			that(agendaConsulta.getMedico().getId() != null, 
					"agendaConsulta.medico.pessoa.nome", "nomePessoa.vazio");
			that(agendaConsulta.getDataConsulta() != null, 
					"agendaConsulta.dataConsulta", "dataConsulta.vazio");
			that(!agendaConsulta.getHoraConsulta().trim().isEmpty(), 
					"agendaConsulta.horaConsulta", "horaAgendaConsulta.vazio");
			that(!agendaConsulta.getStatusConsulta().trim().isEmpty(), 
					"agendaConsulta.statusConsulta", "statusAgendaConsulta.vazio");
		}});
		
		validator.onErrorRedirectTo(this).edita(agendaConsulta.getId());
		agendaConsultaDAO.atualiza(agendaConsulta);
		result.include("mensagem", "Agendamento atualizado com sucesso!");
		result.use(Results.logic()).redirectTo(AgendaConsultaController.class).lista();
	}
	
}

edita.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<h3 align="center">Alterar Agendamento</h3>

<c:forEach var="error" items="${errors}">
	<li>${error.message}</li>
</c:forEach>

<form action="atualiza" method="post">
	<input type="hidden" name="agendaConsulta.id" value="agendaConsulta.id" />

	<p>Nome do Paciente:<br />
	<input type="text" name="agendaConsulta.paciente" maxlength="70" size="70" value="${agendaConsulta.paciente}" /></p>

	<p>M&eacute;dico: <br/>
	<select name="agendaConsulta.medico.id">
		<option value="${agendaConsulta.medico.pessoa.id}">${agendaConsulta.medico.pessoa.nome}</option>
		<c:forEach var="medico" items="${medicos}">
			<option <c:if test="${agendaConsulta.medico.pessoa.id == medico.pessoa.id}"> selected="selected"</c:if> 
			value="${medico.pessoa.id}">${medico.pessoa.nome}</option>                 
		</c:forEach>
	</select></p>
	
	<p>Data da Consulta: <label class="exlabel">Ex: 01/01/2010</label><br />
	<input type="text" name="agendaConsulta.dataConsulta" maxlength="10" size="10" 
		value="<fmt:formatDate pattern='dd/MM/yyyy' value="${agendaConsulta.dataConsulta}"/>" /></p>
	
	<p>Hora da Consulta: <label class="exlabel">Ex: 14:00h</label><br />
	<input type="text" name="agendaConsulta.horaConsulta" maxlength="6" size="6" value="${agendaConsulta.horaConsulta}" /></p>
	
	<p>Status da Consulta:<br />
	<select name="agendaConsulta.statusConsulta">
		<option></option>
		<option>Agendada</option>
		<option>Cancelada</option>
		<option>Realizada</option>
	</select></p>
	
	<input type="submit" value="Alterar" />
</form>

Alguma ideia do que pode ser??

Desde já, valeu aí galera! ^^

Fala Guilherme!
Posta esta a linha 50 do AgendaConsultaDAO:
O erro parece ser lá.
[]s

Fala Guevara!
A linha 50 é o método carregaAgendamento(Long id);
O que eu não entendo é que ele está funcionando, pois ele preenche o formulário da alteração e exclui o agendamento, ele só não está alterando quando eu clico no botão do form…

public AgendaConsulta carregaAgendamento(Long id) {
		return (AgendaConsulta) this.session.load(AgendaConsulta.class, id);
	}

[]'s

Alguém??

Para quem tiver o mesmo problema, o erro era no :

<input type="hidden" name="agendaConsulta.id" value="agendaConsulta.id" /> 

O certo é:

<input type="hidden" name="agendaConsulta.id" value="${agendaConsulta.id}" /> 

Abraço!

Arrumei aqui já!
Valeu aí Guevara!