Galera, boa noite!
Estou enfrentando um problema com meu projeto, ele se trata
de um software para Escritório de Advogados, então criei uma tabela
Cliente e uma Processo, as mesmas são vinculados com Many to Many, ou seja,
existe uma terceira tabela de vinculação.
Ate ai aparentemente tudo certo, porem quando seleciono um Cliente da tabela
e abro a janela dos Processos deste cliente, queria que aparecem apenas os Processos dele
mas lista todos os processos (claro),alguém tem ideia de como fazer isso?
Desde já muito obrigado.
na hora de fazer o select passa o id do cliente numa clausula where, tipo assim
select * from nome_da_tabela where id_do_Cliente = id;
Aparece para mim o seguinte erro:
Exception in thread “AWT-EventQueue-0” java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Syntax error parsing [SELECT * FROM ProcessoJudicial,PessoaFisica WHERE ProcessoJudicial.numerodoprocesso = PessoaFisica.codigopessoa].
[45, 45] A select statement must have a FROM clause.
[7, 7] The left expression is missing from the arithmetic expression.
[9, 45] The right expression is not an arithmetic expression.
mas da pra vc fazer uma consulta em hql, nao? tipo
FROM Nome_da_Tabela where id_Cliente=id
Da ate que da, mas estou fazendo ela em sql e nao esta funcionando. Tipo
tem um lugar pela interface grafica que deixa escrever a query em sql diretamente,
mas nao sei, nao funciona de jeito nenhum.
acho que você tenha que dar um join conectando as tabelas olha esse artigo talvez te ajude
Faz sentido, vou testar aqui, logo mais volto.
ok boa sorte
Tipo, como vou comparar o cliente que a pessoa clicou com o que existe no banco? Pq nao
tem como eu fazer a query sem saber que cliente a pessoa quer…
faça um método que pega o id do cliente quando a pessoa clicar na tabela. assim vc vai saber qual pessoa ela que.
o join deu certo?
ta mas, vou ter que salvar o id dela no banco toda vez que ela clicar, nao entendi
não sei bem a regra de negocio da sua aplicação. mas pelo que entendi, faça um método que quando a pessoa clicar no cliente o método retorne o id do cliente, esse id nao precisa ser salvo mas vc vai usar ele pra pesquisar no banco passando por paramento
como assim passar por parametro? e essa comunicao da interface grafica com o banco que nao estou entendendo, pq pegar o id da pessoa selecionada blz, mas nao to entendo como vou “falar” para o banco de dados
tipo assim imagino que vc possa fazer quando o usuário selecionar o cliente ele terá que apertar um botão por exemplo pra abrir os processos desse cliente, no evento do botão vc pega o id do cliente e no próprio evento vc chama seu método de query. no método da query vc tem que passar o id do cliente e jogar o resultado pra outra tela.
vou tentar aqui, perai, ja volto de novo hehehehe
se vc estiver utilizando JSF e listando os clientes em um DataTable existe uma propriedade na mesma que se chama getRowData(); aqui vc pega o objeto selecionado e joga na sua classe controller e a partir daí vc faz a consulta no BD de acordo com sua necessidade. Ex.:
private DataModel dataModelClientes;
public DataModel getDataModelClientes(){
if(dataModelClientes == null){
dataModelClientes = new ListDataModelClientes<>(clienteService.buscaTodosOsClientes());
}
return dataModelClientes;
}
public ClienteSelecionado(){
return dataModelClientes.getRowData();
}