Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Pegar uma Lista ao invés de um item

Olá Pessoal, Preciso de uma ajuda aqui, tenho no meu projeto hipotético um método que pega um item do banco por meio do método GetLista(abaixo) porém quero alterá-lo para pegar uma lista de itens de uma única vez.

Desde já agradeço!

@Entity public class Cliente {

            @Id
            @GeneratedValue(strategy=GenerationType.IDENTITY)
            private Integer id;
            private String nome;


            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 class GetLista { @Query(value =""

               + "SELECT a"
               + "  FROM Cliente"
               + "    WHERE a.id = ?1"
               ,hints = {
                          QueryHint(name = "javax.persistence.cache.retrieveMode", value = "BYPASS"),
                          QueryHint(name = "javax.persistence.cache.storeMode",value = "REFRESH")                        
                        })

public abstract Cliente findCliente (final Integer id);

}

public class PrintLista {

    for (Cliente cliente : clienteList) {

        clienteid = findCliente(cliente.getId());
        System.out.println("id do cliente: " +clienteid);

    }

}

4 respostas
@Query("SELECT u FROM Cliente u WHERE u.status = ?1")
Collection<Cliente> findAllClients();
public abstract Cliente findClientes(final Integer status);

Olá Otávio, obrigado pelo retorno, porém a idéia seria enviar uma lista de objetos na invocação do método que busca no banco. Ex.:

clienteid = findCliente(List<cliente) cliente);

Dessa forma consegue me dar uma idéia como ficaria o método de retorno da query ?

Desde já agradeço pela atenção.

Obrigado.

solução!

Olá Antonio, a query para que vc pesquise uma lista teria que ser:

StringBuilder sql = new StringBuilder

sql.append("SELECT a FROM CLIENTE WHERE a.ID IN ( "); int count = 0; for(Cliente cliente listCliente){//foreach sql.append(" " + cliente.id); // vai add os parametros count =+ 1;

if(listCliente.size() == count){ //verificar o tamanho da lista
    slq.append(")") //se for o úlltimo item da lista
} else{
    sql.append(" ,  "); // se ainda tiver mais itens
    }

@Query("sql");

Igor muito obrigado pelo retorno. Deu certinho aqui. Só na checagem da lista que incrementei o count.

if(listCliente.size() == count){ //verificar o tamanho da listasql.append(" )"); //se for o último item da lista } else{ sql.append(" ,"); // se ainda tiver mais itens count++; } Abraço.