Estou criando um relatório com Jasper. Dentro dele existe uma conexão com o BD que executa um SQL com base no parametro que envio para o relatório. Eu carrego o .jrxml e compilo, guardo o compilado em um diretório e dai em diante eu verifico se existe esse .jasper compilado, se existir eu não compilo mais o relatório.
Pergunta: O relatório sempre deve ser compilado quando uso SQL?
Faço essa estratégia de checar se existe o compilado para evitar a compilação (que demora um pouco e pode ser algo grave para o uso do usuário).
Ola, recomendo não usar sql no relatório, faça a consulta na sua aplicação e passe somente os dados para o relatório. Seria mesma coisa que sua tela executar uma sql no banco, em padrões MVC isso é terrível.
1 curtida
Olá Rodrigo, entendo o que vc diz, sei que padrões isso é horrível, mas precisamos customizar e deixar customizavel o relatório para o cliente. Continuando sobre o problema: O que acho que pode estar acontecendo…estamos trabalhando com micro-serviços, teria alguma chance do JPA não estar persistindo os dados a tempo do jasper consumir e construir o relatório?
O relatório em SQL deve refletir o que está no banco, isso é fácil de voce verificar independente do micro serviço, com a própria ferramenta do banco. Se o relatório estiver ok então mude o foco do problema para o micro serviço. Como JPA trabalha com cache, existe chance sim, o ideal nem seria usar JPA, qual o motivo do uso?