Quando crio objetos Query no Netbeans arrastando tabelas pro form, ele cria uma query inicial, por exemplo:
Porém percebi que conforme fui adicionando mais objetos Query e a quantidade de registros nas tabelas foram aumentando,
o form começou a demorar mais pra abrir. Então fui nos objetos e fiz:
Isso deu uma melhorada mas não parece ser o modo correto de fazer. Como resolver este problema?
Bom, você realmente precisa buscar todos os usuários ?
lele_vader
Talvez você precise paginar a sua consulta.
O que está demorando é a renderizar a página ?
marciosouzajunior
Rodrigo, não preciso no momento que carrego o form, mas se não colocar uma query retorna um erro:
[color=red]Exception in thread “AWT-EventQueue-0” java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Syntax error parsing the query [], line 0, column -1: unexpected end of query.[/color]
lele_vader, não é uma página, é um JInternalFrame. Ele demora pra ser exibido.
Na verdade, como disse pro Rodrigo, não preciso de nenhum resultado nesse momento.
Hebert_Coelho
Se você fizer isso, sua consulta virá vazia. O.o
Você não deveria paginar sua consulta?
marciosouzajunior
Hebert, faço isso justamente pra ela vir vazia. Quando carrego o JInternalFrame, já inicializo essas Querys
e no primeiro momento não preciso de resultados. Acho que da forma como estou fazendo não tem outra saída.
Hebert_Coelho
marciosouzajunior:
Hebert, faço isso justamente pra ela vir vazia. Quando carrego o JInternalFrame, já inicializo essas Querys
e no primeiro momento não preciso de resultados. Acho que da forma como estou fazendo não tem outra saída.
Não seria mais fácil retornar uma lista vazia? Collections.emptyList()?
Ou se você já quer retornar um valor, por que não faz uma pesquisa paginada?
marciosouzajunior
Vc já viu que quando o netbeans cria os componentes pra você, ele cria um método initComponents?
Pois então, dentro desse método eu tenho:
usuarioQuery = java.beans.Beans.isDesignTime() ? null : minhaPUEntityManager.createQuery("SELECT u FROM Usuarios u WHERE u.codigo = -1");
usuarioList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : usuarioQuery.getResultList();
Então sou obrigado o passar uma query pra ele.
Hebert_Coelho
marciosouzajunior:
Vc já viu que quando o netbeans cria os componentes pra você, ele cria um método initComponents?
Pois então, dentro desse método eu tenho:
usuarioQuery = java.beans.Beans.isDesignTime() ? null : minhaPUEntityManager.createQuery("SELECT u FROM Usuarios u WHERE u.codigo = -1");
usuarioList = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : usuarioQuery.getResultList();
Então sou obrigado o passar uma query pra ele.
Não. Eu não o uso justamente por suas facilidades uma hora virar “dificulidades”.
Mas creio que exista um modo de contornar isso.
Como você está usando o automático da coisa e eu não sei como funciona, boa sorte.
marciosouzajunior
Nada que não tenha como contornar sem perder a produtividade.
Obrigado!
Hebert_Coelho
marciosouzajunior:
Nada que não tenha como contornar sem perder a produtividade.
Obrigado!
Mas está funcionando mesmo? Tanto que você teve que colocar -1 lá. Até que ponto essa produtividade é válida? Quantos mais -1 terão que ser inseridos no código?
Inté
marciosouzajunior
Sim, está funcionando. Tive que colocar 9 desses -1. É bem produtivo arrastar tabelas pro form e já obter a entity manager + query + list.
Mas talvez no atual momento, vendo como as coisas ficaram, talvez seja melhor dar uma organizada na mão mesmo.