JPQL retornado nullPointer [RESOLVIDO]

tenho a seguinte JPQL:

[code]public List listaUfMunicipio(Uf uf){
Query query = em.createQuery("select m from Municipio m where m.uf = "+ uf.getId());
return query.getResultList();

}[/code]

que faz o seguinte, lista todos municipios que tem o mesmo codigo da uf passada.

do jeito que esta acima da o nullPointerException
mas se eu fizer assim ele lista os municipios correspondentes a uf de cod 1…

[code]public List listaUfMunicipio(Uf uf){
Query query = em.createQuery("select m from Municipio m where m.uf = 1);
return query.getResultList();

}[/code]

pq meu uf.getId nao esta pegando os id’s…???
coloquei um breakpoint e diz que Uf=null

seu método está recebendo uma objeto Uf com o id nulo. Se for o caso, coloque um ponto de debug e tente trocar o valor do id em tempo de execução que irá funcionar como você mesmo descreveu! :stuck_out_tongue:

mas eu precisava saber pq daquele jeito nao esta funcionado… pois necessito que aquele codigo funcione… eu sei que ele esta vindo null e se eu altera-lo ira funcionar… mas gostaria de saber pq está vindo null se tem dados no banco…

Hey brow posta a classe UF ae …(viajei) achei q era hibernate

–edit posta o lugar em que vc instancia a classe Uf provavelmente dentro de um while com um resultSet…
e manda o lugar em que vc chama o método listaUfMunicipio(Uf uf)

abraço.

uf.java

package br.com.engtec.combo.modelo;

import java.util.List;

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

@Entity
public class Uf {
		
		@Id
		@GeneratedValue
		private Integer id;
		private String nome;
	
	@OneToMany(mappedBy="uf", fetch=FetchType.LAZY)
	private List<Municipio> municipios;

	

	public Integer getId() {
		return id;
	}

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

	public String getNome() {
		return nome;
	}

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

	public List<Municipio> getMunicipios() {
		return municipios;
	}

	public void setMunicipios(List<Municipio> municipios) {
		this.municipios = municipios;
	}
	
	
}

MunicipioDAO - onde chamo o uf.getId

package br.com.engtec.combo.DAO;

import java.util.List;


import javax.persistence.EntityManager;
import javax.persistence.Query;




import br.com.caelum.vraptor.ioc.Component;
import br.com.engtec.combo.modelo.Municipio;
import br.com.engtec.combo.modelo.Uf;

@Component
public class MunicipioDAO {
	private final DAO<Municipio> dao;
	private final EntityManager em;
	
	
	

	public MunicipioDAO(EntityManager em) {
		dao = new DAO<Municipio>(em, Municipio.class);
		this.em = em;
		
		
	}

	public void adiciona(Municipio t) {
		dao.adiciona(t);
	}

	public void remove(Municipio t) {
		dao.remove(t);
	}

	public void altera(Municipio t) {
		dao.altera(t);
	}

	public Municipio busca(Integer id) {
		return dao.busca(id);
	}

	public List<Municipio> lista() {
		return dao.lista();
	} 
	
	

	
	@SuppressWarnings("unchecked")
	public List<Municipio> listaUfMunicipio(Uf uf){
		Query query = em.createQuery("select m from Municipio m where m.uf = "+ uf.getId());  //este aqui que esta retornando null
		if(uf.getId()== null){
			
		}
		return query.getResultList();
	
		
	}
}

e o controller do vraptor

@Get @Path("/municipios/buscaMunicipios.json")
	public void loadMunicipios(Uf uf){
	    List<Municipio> municipios = dao.listaUfMunicipio(uf);
	    result.use(Results.json()).withoutRoot().from(municipios)
	        .serialize();
	}

usa query.setParameter()

sem querer ser chato como posso fazer??.. fiz varios tipo e ate agora nada…

para o caso dele aqui, acredito que dá no mesmo.

    @Get @Path("/municipios/buscaMunicipios.json")  
        public void loadMunicipios(Uf uf){ // já está vindo nullo daqui ...
            List<Municipio> municipios = dao.listaUfMunicipio(uf);  
            result.use(Results.json()).withoutRoot().from(municipios)  
                .serialize();  
        }  

Cara, não manjo de vraptor, mas acredito ser parecido com o Spring MVC. Então vamos ao seu caso, no trecho acima, você não está setando em lugar algum o Id do uf, então, to supondo que ele TENHA que vir populado já pelo vraptor. Agora a duvida, você tem certeza que está setando o Id da Uf antes do vraptor chamar o seu loadMunicipios?

tem q i mais a fundo ainda cara …
tem q ser o momento em q vc busca o uf…

onde ocorre a chamada desse método ?

loadMunicipios(Uf uf) 

Well, vc esta usando o Hibernate para fazer a pesquisa, espera-se com isso diminuir o codigo SQL …
Bem … tb já passei por isso … de uma olhada no codigo:

public List<Cliente> ClientesAtivos(Cliente cliente){
		
		Query query = null;
		
		System.out.println("REPOSITORY CLIENTES ATIVOS + CPF");
		if (cliente.getCpf() != null) {
			query = this.entityManager.createQuery("from Cliente as c where" +
			 " c.situacao =:situacao"+
			 	"AND c.cpf =:cpf");
			query.setParameter("situacao", "A");
			query.setParameter("cpf", cliente.getCpf());
		}
		else if(cliente.getId() != null){
			query = this.entityManager.createQuery("from Cliente as c where" +
					 " c.situacao =:situacao"+
					 	"AND c.id =:id");
					query.setParameter("situacao", "A");
					query.setParameter("id", cliente.getId());
		}
		else if(cliente.getNome() != null && cliente.getSobrenome() == null){
			query = this.entityManager.createQuery("from Cliente as c where" +
					 " c.situacao =:situacao"+
					 	"AND LIKE c.nome =:nome");
					query.setParameter("situacao", "A");
					query.setParameter("nome", cliente.getNome());
		}
		else if(cliente.getNome() != null && cliente.getSobrenome() != null){
			query = this.entityManager.createQuery("from Cliente as c where" +
					 " c.situacao =:situacao"+
					 "AND LIKE c.nome =:nome"+
					 "AND LIKE c.sobrenome =:sobrenome");
					query.setParameter("situacao", "A");
					query.setParameter("nome", cliente.getNome());
					query.setParameter("nome", cliente.getSobrenome());
		}
		
		//System.out.println("SITACAO: "+" "+ cliente.getSituacao());
		return query.getResultList();
	}

Observe essa parte do código … que é o que muda:

c.situacao =:situacao"+
			 	"AND c.cpf =:cpf");
			query.setParameter("situacao", "A");
			query.setParameter("cpf", cliente.getCpf());

coloque “=:” e depois set os parametros para ele …

Bem . espero ter ajudado …
Abraços

salve galera… mudei a estrategia… estou usando criteria…

se eu faço como esta abaixo, ele compara a PK da tabela uf com a PK da tabela municipio… e lista… errado mas lista…

public List<Municipio> listaUfMunicipio(Long uf){
		Session session = (Session) em.getDelegate();
	    return session.createCriteria(Municipio.class)
	            .add(Restrictions.like("id", uf))
	            .list();
	}

se faço assim

public List<Municipio> listaUfMunicipio(Long uf){
		Session session = (Session) em.getDelegate();
	    return session.createCriteria(Municipio.class)
	            .add(Restrictions.like("uf", uf))
	            .list();
	}

gera o seguinte erro…

19/05/2011 18:06:39 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: Servlet.service() for servlet default threw exception br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of br.com.engtec.combo.modelo.Uf.id at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70) at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92) at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89) 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:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source) Caused by: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of br.com.engtec.combo.modelo.Uf.id at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:62) at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:230) at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3852) at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3560) at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:204) at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:243) at org.hibernate.type.EntityType.getIdentifier(EntityType.java:449) at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:141) at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1769) at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1740) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1612) at org.hibernate.loader.Loader.doQuery(Loader.java:717) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270) at org.hibernate.loader.Loader.doList(Loader.java:2294) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2172) at org.hibernate.loader.Loader.list(Loader.java:2167) at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:119) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1706) at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347) at br.com.engtec.combo.DAO.MunicipioDAO.listaUfMunicipio(MunicipioDAO.java:73) at br.com.engtec.combo.controller.MunicipiosController.loadMunicipios(MunicipiosController.java:32) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57) ... 40 more Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field br.com.engtec.combo.modelo.Uf.id to java.lang.Long at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source) at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source) at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(Unknown Source) at sun.reflect.UnsafeObjectFieldAccessorImpl.get(Unknown Source) at java.lang.reflect.Field.get(Unknown Source) at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:59) ... 65 more Hibernate: select this_.id as id6_1_, this_.nome as nome6_1_, this_.idUf as idUf6_1_, uf2_.id as id7_0_, uf2_.nome as nome7_0_ from Municipio this_ left outer join Uf uf2_ on this_.idUf=uf2_.id where this_.idUf like ? 19/05/2011 18:06:40 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: Servlet.service() for servlet default threw exception br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of br.com.engtec.combo.modelo.Uf.id at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:90) at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:44) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:53) at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70) at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92) at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89) 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:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Unknown Source) Caused by: org.hibernate.PropertyAccessException: could not get a field value by reflection getter of br.com.engtec.combo.modelo.Uf.id at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:62) at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:230) at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3852) at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3560) at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:204) at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:243) at org.hibernate.type.EntityType.getIdentifier(EntityType.java:449) at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:141) at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1769) at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1740) at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1612) at org.hibernate.loader.Loader.doQuery(Loader.java:717) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270) at org.hibernate.loader.Loader.doList(Loader.java:2294) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2172) at org.hibernate.loader.Loader.list(Loader.java:2167) at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:119) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1706) at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347) at br.com.engtec.combo.DAO.MunicipioDAO.listaUfMunicipio(MunicipioDAO.java:73) at br.com.engtec.combo.controller.MunicipiosController.loadMunicipios(MunicipiosController.java:32) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57) ... 40 more Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field br.com.engtec.combo.modelo.Uf.id to java.lang.Long at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source) at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source) at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(Unknown Source) at sun.reflect.UnsafeObjectFieldAccessorImpl.get(Unknown Source) at java.lang.reflect.Field.get(Unknown Source) at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:59) ... 65 more

se alguem tiver alguma sugestao…

Pessoal depois de muita luta, e ajuda de todos… resolvi…

eu estava passando somente a uf…

public List<Municipio> listaUfMunicipio(Long uf){
		Session session = (Session) em.getDelegate();
	    return session.createCriteria(Municipio.class)
	            .add(Restrictions.like("uf.id", uf))
	            .list();
	}

para o caso dele aqui, acredito que dá no mesmo.

    @Get @Path("/municipios/buscaMunicipios.json")  
        public void loadMunicipios(Uf uf){ // já está vindo nullo daqui ...
            List<Municipio> municipios = dao.listaUfMunicipio(uf);  
            result.use(Results.json()).withoutRoot().from(municipios)  
                .serialize();  
        }  

Cara, não manjo de vraptor, mas acredito ser parecido com o Spring MVC. Então vamos ao seu caso, no trecho acima, você não está setando em lugar algum o Id do uf, então, to supondo que ele TENHA que vir populado já pelo vraptor. Agora a duvida, você tem certeza que está setando o Id da Uf antes do vraptor chamar o seu loadMunicipios?[/quote]

cara estava faltando passar o id mesmo… .add(Restrictions.like("uf.id", uf))

Obrigado…