Me da uma ajuda ai galera!
Estou com uma dificuldade,
fiz duas consultas no banco de dados a primeira contem uma lista de 1 funcionários e a segunda uma lista de usuários.
gostaria de saber como verifico se o funcionário já contem na lista de Usuários.
estou usando JPA para conexão ao BD.
#desde já agradeço a ajuda.
#consulta do funcionário
//capitura o valor selecionado na JComboBox
String nome_funcionario = String.valueOf(jComboBox1.getSelectedItem());
funcionarioQuery = entityManager.createQuery("SELECT f.nome FROM Funcionario f WHERE f.nome =:nome");
funcionarioQuery.setParameter("nome", nome_funcionario);
funcionarioList1.clear();
funcionarioList1.addAll(funcionarioQuery.getResultList());
#consulta dos usuários cadastrados
query1 = entityManager.createQuery( "SELECT u.funcionario FROM Usuario u");
list1.clear();
list1.addAll(query1.getResultList());
Olá,
blz, vc quer comparar duas listas com objetos de tipos diferentes, uma tem Funcionario e outra tem Usuario, certo?
Já pensou em como vc vai comparar um Funcionario com um Usuario? Que critérios vc vai usar para dizer que são diferentes ou iguais?
Resolvido isso, é só percorrer as listas fazendo tal comparação entre estes objetos.
e isso que não to conseguindo fazer
tem como você me da uma ajuda ?
No aguardo desta resposta…
deixa eu ver se entendi
eu tenho uma list que retorna pra mim o nome de um funcionário.
e tenho a list de usuários que retorna uma list com os funcionários que já tem um usuário cadastrado.
o que acontece e que na list de funcionário eu só tenho um registro por ex: lucas
e na list de usuários eu tenho uma list com o nome dos funcionários com conta de usurários cadastrados ex: lucas, vítor , alam
quero percorrer a list de usuários e verificar se tem o registro da list de funcionários.
vei desculpa o incomodo ai e que nunca trabalhei com isso.
e o que pesquisei ficou confuso .
Na teoria geral então você quer ver quais os funcionários não tem usuário cadastrado?
olha meu código
public void salvar(){
//capitura o valor selecionado na JComboBox que contem uma list de funcionarios
String nome_funcionario = String.valueOf(jComboBox1.getSelectedItem());
//Faz a consulta dos funcionarios cadrastados no Banco de Dados que tenham o mesmo nome selecionado a JComboBox
funcionarioQuery = entityManager.createQuery("SELECT f.nome FROM Funcionario f WHERE f.nome =:nome");
funcionarioQuery.setParameter("nome", nome_funcionario);
//Armazena o resultado da consulta em uma lista
funcionarioList1.clear();
funcionarioList1.addAll(funcionarioQuery.getResultList());
//Coverte List p/ String e retira os cochetes
String listFuncionario = funcionarioList1.toString();
String teste = listFuncionario.substring(1, listFuncionario.length() - 1);
//Faz a consulta dos usuarios cadrastados no Banco de Dados e retorna o nome do funcionario
query1 = entityManager.createQuery( "SELECT u.funcionario FROM Usuario u");
//Armazena o resultado da consulta em uma lista
list1.clear();
list1.addAll(query1.getResultList());
//compara se a lista de funcionario contem algum registro igual na lista de usuarios
if (list1.contains(funcionarioList1)) {
JOptionPane.showInternalMessageDialog(null, "Funcionario já tem conta de usuario cadrastada no sistema");
}
}
Meu codigo que ver se minhas list de funcionário contem na list de usuario
//compara se a lista de funcionário contem algum registro igual na lista de usuários
if (list1.contains(funcionarioList1)) {
JOptionPane.showInternalMessageDialog(null, "Funcionario já tem conta de usuario cadrastada no sistema");
}
so que não retorna nada mesmo passando um valor que existe na list de usuários
ok, ok, mas na teoria, pra q vc quer isso?
quer ver quais os funcionários não tem usuário cadastrado???
Então por que simplesmente não faz uma busca no banco que lhe traga só estes registros? Pra quê faze essas maracutaias no sistema se é melhor e mais fácil via consulta sql?
Ex:
select * from funcionarios where id not in (select from usuarios)
deu certo meu código ficou assim
public void teste(){
//Armazena Valor selecinado no JComboBox em uma String
String nome_funcionario = String.valueOf(jComboBox1.getSelectedItem());
List f = entityManager.createNativeQuery("select f.nome from usuario u inner join funcionario f on u.id_funcionario = f.id where f.nome ='"+ nome_funcionario +"'").getResultList();
System.out.println(f);
if (f.size() == 1) {
JOptionPane.showMessageDialog(null,"Usuario já cadrastado", "ERRO", JOptionPane.ERROR_MESSAGE);
} else {// Salva registro no Banco de Dados
try {
entityManager.getTransaction().commit();
entityManager.getTransaction().begin();
} catch (RollbackException rex) {
rex.printStackTrace();
entityManager.getTransaction().begin();
List<Model.Usuario> merged = new ArrayList<Model.Usuario>(list.size());
for (Model.Usuario p : list) {
merged.add(entityManager.merge(p));
}
list.clear();
list.addAll(merged);
}
entityManager.getTransaction().rollback();
entityManager.getTransaction().begin();
java.util.Collection data = query.getResultList();
for (Object entity : data) {
entityManager.refresh(entity);
}
list.clear();
list.addAll(data);
}
}
Valew meu amigo muito abrigado