Busca Hibernate e Retorno como parametro

Bem, primeiramente vou lhes informar o que preciso…

Eu tenho que carregar na tela algumas pessoas que são membros de um responsável.

Eu já tenho o código do responsável na minha tela…No entanto atualmente eu só consigo listar todos, pois, não sei como irei repassar o código para o hibernate fazer este filtro.

Sendo que a pessoaMembro tem uma chave estrangeira de pessoaResponsável.

Esse método está no logic da tela que eu quero carregar as pessoas, e está funcionando. Trazendo todas as pessoas do sexo feminino.

public List<PessoaMembro> getListaPessoaMembro(){ return this.daoFactory.getPessoaMembroDao().find("sexo", "Feminino"); }

Eu quero fazer isto, e repassando o código para cá, la da view.

public List<PessoaMembro> getListaPessoaMembro(Integer codigo){ return this.daoFactory.getPessoaMembroDao().find("cd_pessoaReferencia", codigo); }

Alguém pode me dar uma luz?

Valeu.

Se quer carregar uma pessoaMembro:

public PessoaMembro carrega(Long codPessoaMembro) {
		return (Imovel) this.session.load(PessoaMembro.class, codPessoaMembro);
	 }

Listando por parâmetros como sexo:

public List<PessoaMembro> lista() {
		Criteria crit = session.createCriteria(PessoaMembro, "p")
		.add(Restrictions.eq("sexo", "Feminino")):
		List results = crit.list();
		return results;
	 }

Se PessoaResponsável já possui relação de “um pra um” com PessoaMembro, o Hibernate traz pra vc os dois.
Veja se ajuda.
[]s

[quote=Guevara][quote]
Eu já tenho o código do responsável na minha tela…No entanto atualmente eu só consigo listar todos, pois, não sei como irei repassar o código para o hibernate fazer este filtro.

Sendo que a pessoaMembro tem uma chave estrangeira de pessoaResponsável.
[/quote]
Se quer carregar uma pessoaMembro:

public PessoaMembro carrega(Long codPessoaMembro) {
		return (Imovel) this.session.load(PessoaMembro.class, codPessoaMembro);
	 }

Listando por parâmetros como sexo:

public List<PessoaMembro> lista() {
		Criteria crit = session.createCriteria(PessoaMembro, "p")
		.add(Restrictions.eq("sexo", "Feminino")):
		List results = crit.list();
		return results;
	 }

Se PessoaResponsável já possui relação de “um pra um” com PessoaMembro, o Hibernate traz pra vc os dois.
Veja se ajuda.
[]s[/quote]

Acho que não consegui me espressar muito bem.

Vou tentar denovo.

Tipo assim, na minha tela, na view (.jsp) eu tenho uma lista de membros contendo todos os membros, que eu chamo assim ${listaMembros}. Faço um for e listo todos numa boa.
Agora eu preciso fazer algo que eu consiga passar um parametro, ou seja, o codigo da pessoa responsável por uma pessoa membro. Para conseguir pegar todos os membros que uma pessoa responsável possui.
Só que eu não sei como passar para o hibernate esse código…Algo do tipo: ${listaMembros(Integer codigo)}

Estilo a esse método carrega da qual você criou acima, como eu passo aquele Long codPessoaMembro para aquele método ali?

Então, para passar parâmetro pro seu controlador ou servlet, vc poderia ao lado da pessoa, ter um checkbox por exemplo, este checkbox teria o name=“codPessoa” e value=“codPessoa”, colocaria uma id pra ele, e ao clicar executaria uma função ajax, apontando pro seu método carrega no controlador, passando o codigo pro seu controlador, ai receberia lá com um PessoaMembro pessoaMembro.
Essa é uma idéia, deve ter outras formas de fazer.
[]s

[quote=Guevara][quote]
Tipo assim, na minha tela, na view (.jsp) eu tenho uma lista de membros contendo todos os membros, que eu chamo assim ${listaMembros}. Faço um for e listo todos numa boa.
Agora eu preciso fazer algo que eu consiga passar um parametro, ou seja, o codigo da pessoa responsável por uma pessoa membro. Para conseguir pegar todos os membros que uma pessoa responsável possui.
Só que eu não sei como passar para o hibernate esse código…Algo do tipo: ${listaMembros(Integer codigo)}

Estilo a esse método carrega da qual você criou acima, como eu passo aquele Long codPessoaMembro para aquele método ali?
[/quote]

Então, para passar parâmetro pro seu controlador ou servlet, vc poderia ao lado da pessoa, ter um checkbox por exemplo, este checkbox teria o name=“codPessoa” e value=“codPessoa”, colocaria uma id pra ele, e ao clicar executaria uma função ajax, apontando pro seu método carrega no controlador, passando o codigo pro seu controlador, ai receberia lá com um PessoaMembro pessoaMembro.
Essa é uma idéia, deve ter outras formas de fazer.
[]s[/quote]

Poisé, só que eu não quero via Ajax. Queria que fosse direto…

Aqui está o método:

public List<PessoaMembro> getListaPessoaMembro(Integer codigoReferencia){ System.err.println("\n+++++++++++++++++++++++++ -> "+ codigoReferencia + " <-******************"); return this.daoFactory.getPessoaMembroDao().find("pessoaReferencia", codigoReferencia); }

Se eu setar aquele codigo referencia ai dentro, ele retorna certinho pra minha view a lista das pessoas. Mas ainda não consegui fazer com que aquele codigo referencia venha para esse método.

Na minha view eu tenho assim:

<%try{ ResultSet rs = st.executeQuery("SELECT * FROM pessoareferencia WHERE cd_referencia=(SELECT MAX(cd_referencia) FROM pessoareferencia)"); while(rs.next()){%> Código da última pessoa referencia cadastrada: <input type="text" name="pessoaReferencia.cdPsReferencia" id="pessoaReferencia.cdPsReferencia" value="<%=rs.getString("cd_referencia")%>"/> <%}%> <div id="abandonou" style="display: none"> <b>Quais?</b><br/> <c:forEach var="membro" items="${listaPessoaMembro}"> <input id="abandonou" type="checkbox" name="pessoaMembro.abandonouEscola" id="pessoaMembro.abandonouEscola" value="${membro.cdPsMembro}"> ${membro.cdPsMembro} - ${membro.nome}<br> </c:forEach> </div>

O código que deveria ir para lá é aquele que eu pego no rs.getString(“cd_referencia”);
Então, como que eu devo colocar lá no logic pra ele associar aquele código la na logic. To achando que não esta havendo a “conexão” que o vRaptor faz entre o nome que está na view e o que esta sendo esperado na Logic.

Entendesse o que eu quis dizer?

[quote=marcio_jagua][quote=Guevara][quote]
Tipo assim, na minha tela, na view (.jsp) eu tenho uma lista de membros contendo todos os membros, que eu chamo assim ${listaMembros}. Faço um for e listo todos numa boa.
Agora eu preciso fazer algo que eu consiga passar um parametro, ou seja, o codigo da pessoa responsável por uma pessoa membro. Para conseguir pegar todos os membros que uma pessoa responsável possui.
Só que eu não sei como passar para o hibernate esse código…Algo do tipo: ${listaMembros(Integer codigo)}

Estilo a esse método carrega da qual você criou acima, como eu passo aquele Long codPessoaMembro para aquele método ali?
[/quote]

Então, para passar parâmetro pro seu controlador ou servlet, vc poderia ao lado da pessoa, ter um checkbox por exemplo, este checkbox teria o name=“codPessoa” e value=“codPessoa”, colocaria uma id pra ele, e ao clicar executaria uma função ajax, apontando pro seu método carrega no controlador, passando o codigo pro seu controlador, ai receberia lá com um PessoaMembro pessoaMembro.
Essa é uma idéia, deve ter outras formas de fazer.
[]s[/quote]

Poisé, só que eu não quero via Ajax. Queria que fosse direto…

Aqui está o método:

public List<PessoaMembro> getListaPessoaMembro(Integer codigoReferencia){ System.err.println("\n+++++++++++++++++++++++++ -> "+ codigoReferencia + " <-******************"); return this.daoFactory.getPessoaMembroDao().find("pessoaReferencia", codigoReferencia); }

Se eu setar aquele codigo referencia ai dentro, ele retorna certinho pra minha view a lista das pessoas. Mas ainda não consegui fazer com que aquele codigo referencia venha para esse método.

Na minha view eu tenho assim:

<%try{ ResultSet rs = st.executeQuery("SELECT * FROM pessoareferencia WHERE cd_referencia=(SELECT MAX(cd_referencia) FROM pessoareferencia)"); while(rs.next()){%> Código da última pessoa referencia cadastrada: <input type="text" name="pessoaReferencia.cdPsReferencia" id="pessoaReferencia.cdPsReferencia" value="<%=rs.getString("cd_referencia")%>"/> <%}%> <div id="abandonou" style="display: none"> <b>Quais?</b><br/> <c:forEach var="membro" items="${listaPessoaMembro}"> <input id="abandonou" type="checkbox" name="pessoaMembro.abandonouEscola" id="pessoaMembro.abandonouEscola" value="${membro.cdPsMembro}"> ${membro.cdPsMembro} - ${membro.nome}<br> </c:forEach> </div>

O código que deveria ir para lá é aquele que eu pego no rs.getString(“cd_referencia”);
Então, como que eu devo colocar lá no logic pra ele associar aquele código la na logic. To achando que não esta havendo a “conexão” que o vRaptor faz entre o nome que está na view e o que esta sendo esperado na Logic.

Entendesse o que eu quis dizer? [/quote]

Tipo Assim, olha esse exemplo do vRaptor…
http://vraptor.caelum.com.br/vraptor2/pt/presentation/index.html

Ali não explica como passar o parametro String name para este método…

// alias o método para "search" @Logic("search") public void searchUsers(String name) { // dao esquisito, mas só um exemplo this.users = new UserDao().searchByName(name); }