Pessoal, estou com um problema que está me atormentando bastante.
Eu uso o Hibernate3
GlassFish Server Open Source Edition 3.1.2.2 (build 5)
Netbeans 7.2.1
O problema é que eu faço o deploy da minha aplicação e depois de algumas horas os valores retornados pela aplicação vem errado, vindo com dados com relacionamentos errados com a chave estrangeira.
meu arquivo persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="eduPU-DEV" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>Relatorios-EDU</non-jta-data-source>
<shared-cache-mode>NONE</shared-cache-mode>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.cache.use_second_level_cache" value="false"/>
<property name="hibernate.cache.use_query_cache" value="false" />
<property name="hibernate.cache.use_structured_entries" value="false" />
<property name="hibernate.cache.generate_statistics" value="false" />
</properties>
</persistence-unit>
</persistence>
Meu Managed Bean:
/*
*
* _______ _______ _ _______ _________ _______ _______ _________ _______ _______ _______ ______
* ( ____ )( ____ \( \ ( ___ )\__ __/( ___ )( ____ )\__ __/( ___ )( ____ \ ( ____ \( __ \ |\ /|
* | ( )|| ( \/| ( | ( ) | ) ( | ( ) || ( )| ) ( | ( ) || ( \/ | ( \/| ( \ )| ) ( |
* | (____)|| (__ | | | (___) | | | | | | || (____)| | | | | | || (_____ _____ | (__ | | ) || | | |
* | __)| __) | | | ___ | | | | | | || __) | | | | | |(_____ )(_____)| __) | | | || | | |
* | (\ ( | ( | | | ( ) | | | | | | || (\ ( | | | | | | ) | | ( | | ) || | | |
* | ) \ \__| (____/\| (____/\| ) ( | | | | (___) || ) \ \_____) (___| (___) |/\____) | | (____/\| (__/ )| (___) |
* |/ \__/(_______/(_______/|/ \| )_( (_______)|/ \__/\_______/(_______)\_______) (_______/(______/ (_______)
*
*
*
* Copyleft (c) 2012 - 2013 Relatórios-EDU
*
* http://ww2.ifro.edu.br/relatorios-edu
* DGTI - IFRO (69) - 2182-9623
* Alan de Oliveira Silva - alan.oliveira@ifro.edu.br
* Bruce F. Reis de Albuquerque - bruce.albuquerque@ifro.edu.br
* Flávio Marcos de Moraes - flavio.moraes@ifro.edu.br
*
*
*
*/
package br.reports.controller;
import br.reports.auth.LoggedUser;
import br.reports.model.core.CoreReport;
import br.reports.model.entities.UnidadeEnsino;
import br.reports.model.entities.VwRelDiarios2;
import br.reports.model.entities.utils.PersistenceFactory;
import java.io.IOException;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.faces.model.SelectItem;
import javax.persistence.Query;
import net.sf.jasperreports.engine.JRException;
import org.primefaces.model.StreamedContent;
/**
*
* @author alanoliveira
*/
public class EstatisticasController implements Serializable {
private static final long serialVersionUID = 3830090976086552744L;
private Integer selectedCampus;
private Integer selectedPeriodo;
private Integer selectedCurso;
private Integer selectedTurma;
private Integer selectedClasse;
private Integer selectedDisciplina;
private Integer selectedAno;
public EstatisticasController() {
selectedCampus = 0;
selectedClasse = 0;
selectedCurso = 0;
selectedPeriodo = 0;
selectedTurma = 0;
selectedAno = 0;
}
public Integer getSelectedDisciplina() {
return selectedDisciplina;
}
public void setSelectedDisciplina(Integer selectedDisciplina) {
this.selectedDisciplina = selectedDisciplina;
}
public Integer getSelectedCampus() {
return selectedCampus;
}
public void setSelectedCampus(Integer selectedCampus) {
this.selectedCampus = selectedCampus;
}
public Integer getSelectedClasse() {
return selectedClasse;
}
public void setSelectedClasse(Integer selectedClasse) {
this.selectedClasse = selectedClasse;
}
public Integer getSelectedCurso() {
return selectedCurso;
}
public void setSelectedCurso(Integer selectedCurso) {
this.selectedCurso = selectedCurso;
}
public Integer getSelectedPeriodo() {
return selectedPeriodo;
}
public void setSelectedPeriodo(Integer selectedPeriodo) {
this.selectedPeriodo = selectedPeriodo;
}
public Integer getSelectedTurma() {
return selectedTurma;
}
public void setSelectedTurma(Integer selectedTurma) {
this.selectedTurma = selectedTurma;
}
//bruce
public Integer getSelectedAno() {
return selectedAno;
}
public void setSelectedAno(Integer selectedAno) {
this.selectedAno = selectedAno;
}
public boolean notExist(Integer numberId, List<SelectItem> lista) {
for (SelectItem tmp : lista) {
if (tmp.getValue().equals(numberId)) {
return false;
}
}
return true;
}
public List<SelectItem> getListCampus() {
List<SelectItem> lista = new LinkedList<SelectItem>();
lista.add(new SelectItem(0, "Selecione..."));
for (UnidadeEnsino el: LoggedUser.getUnidadeEnsino()) {
lista.add(new SelectItem(el.getElementoOrganizacional().getId() ,el.getElementoOrganizacional().getNome()));
}
return lista;
}
public List<SelectItem> getListPeriodos() {
Query query = PersistenceFactory.getPersistenceTransaction().getEntityManager().createNamedQuery("VwRelDiarios2.getByCampusCampus");
query.setParameter("campus", selectedCampus);
List<SelectItem> lista = new LinkedList<SelectItem>();
lista.add(new SelectItem(0, "Selecione..."));
SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
List<VwRelDiarios2> rel = query.getResultList();
for (VwRelDiarios2 temp : rel) {
if (notExist(temp.getIdPl(), lista)) {
String data1 = formatador.format(temp.getPlDataIncio());
String data2 = formatador.format(temp.getPlDataFim());
lista.add(new SelectItem(temp.getIdPl(), temp.getPlAno().toString() + "/" + temp.getPlNumero().toString() + " - " + data1 + " a " + data2));
}
}
return lista;
}
public List<SelectItem> getListCursos() {
Query query = PersistenceFactory.getPersistenceTransaction().getEntityManager().createNamedQuery("VwRelDiarios2.getByCampusPeriodoLetivo");
query.setParameter("campus", selectedCampus);
query.setParameter("pl", selectedPeriodo);
//query.setParameter("pf", LoggedUser.getLoggedUser().getPessoaFisicaId().getId());
List<SelectItem> lista = new LinkedList<SelectItem>();
lista.add(new SelectItem(0, "Selecione..."));
List<VwRelDiarios2> rel = query.getResultList();
for (VwRelDiarios2 temp : rel) {
if (notExist(temp.getCurId(), lista)) {
lista.add(new SelectItem(temp.getCurId(), temp.getCurNome()));
}
}
return lista;
}
public List<SelectItem> getListTurmas() {
Query query = PersistenceFactory.getPersistenceTransaction().getEntityManager().createNamedQuery("VwRelDiarios2.getByCampusCurso");
query.setParameter("campus", selectedCampus);
query.setParameter("pl", selectedPeriodo);
query.setParameter("curso", selectedCurso);
//query.setParameter("pf", LoggedUser.getLoggedUser().getPessoaFisicaId().getId());
List<SelectItem> lista = new LinkedList<SelectItem>();
lista.add(new SelectItem(0, "Selecione..."));
List<VwRelDiarios2> rel = query.getResultList();
for (VwRelDiarios2 temp : rel) {
if (notExist(temp.getTurId(), lista)) {
lista.add(new SelectItem(temp.getTurId(), temp.getTurIdentificador()));
}
}
return lista;
}
public List<SelectItem> getListClasses() {
Query query = PersistenceFactory.getPersistenceTransaction().getEntityManager().createNamedQuery("VwRelDiarios2.getByCampusTurma");
query.setParameter("campus", selectedCampus);
query.setParameter("pl", selectedPeriodo);
query.setParameter("curso", selectedCurso);
query.setParameter("turma", selectedTurma);
//query.setParameter("pf", LoggedUser.getLoggedUser().getPessoaFisicaId().getId());
List<SelectItem> lista = new LinkedList<SelectItem>();
lista.add(new SelectItem(0, "Selecione..."));
List<VwRelDiarios2> rel = query.getResultList();
for (VwRelDiarios2 temp : rel) {
if (notExist(temp.getClId(), lista)) {
lista.add(new SelectItem(temp.getClId(), temp.getEleCurNome()));
}
}
return lista;
}
//Estatisticas
public StreamedContent getGraficoUtilizacaoSiga() throws JRException, IOException {
Map<String, Object> parameters = new HashMap();
/*Query query = PersistenceFactory.getPersistenceTransaction().getEntityManager().createNamedQuery("VwRelDiarios2.getByCampusPeriodoLetivo");
query.setParameter("pl", selectedPeriodo);
query.setParameter("campus", selectedCampus);
List<VwRelDiarios2> diarios = new LinkedList<VwRelDiarios2>();
diarios = query.getResultList();
*/
//parameters.put("periodo_letivo_ano", diarios.get(0).getPlAno());
parameters.put("periodo_letivo_ano", selectedAno);
parameters.put("user", LoggedUser.getLoggedUser().getLogin());
//criar parameter
//ver com o flavio o arquivo jasper
return CoreReport.doReport("reports/GraficoUtilizacaoDoSiga.jasper", parameters);
}
@Override
public int hashCode() {
int hash = 7;
hash = 23 * hash + (this.selectedCampus != null ? this.selectedCampus.hashCode() : 0);
hash = 23 * hash + (this.selectedPeriodo != null ? this.selectedPeriodo.hashCode() : 0);
hash = 23 * hash + (this.selectedCurso != null ? this.selectedCurso.hashCode() : 0);
hash = 23 * hash + (this.selectedTurma != null ? this.selectedTurma.hashCode() : 0);
hash = 23 * hash + (this.selectedClasse != null ? this.selectedClasse.hashCode() : 0);
hash = 23 * hash + (this.selectedDisciplina != null ? this.selectedDisciplina.hashCode() : 0);
hash = 23 * hash + (this.selectedAno != null ? this.selectedAno.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final EstatisticasController other = (EstatisticasController) obj;
if (this.selectedCampus != other.selectedCampus && (this.selectedCampus == null || !this.selectedCampus.equals(other.selectedCampus))) {
return false;
}
if (this.selectedPeriodo != other.selectedPeriodo && (this.selectedPeriodo == null || !this.selectedPeriodo.equals(other.selectedPeriodo))) {
return false;
}
if (this.selectedCurso != other.selectedCurso && (this.selectedCurso == null || !this.selectedCurso.equals(other.selectedCurso))) {
return false;
}
if (this.selectedTurma != other.selectedTurma && (this.selectedTurma == null || !this.selectedTurma.equals(other.selectedTurma))) {
return false;
}
if (this.selectedClasse != other.selectedClasse && (this.selectedClasse == null || !this.selectedClasse.equals(other.selectedClasse))) {
return false;
}
if (this.selectedDisciplina != other.selectedDisciplina && (this.selectedDisciplina == null || !this.selectedDisciplina.equals(other.selectedDisciplina))) {
return false;
}
if (this.selectedAno != other.selectedAno && (this.selectedAno == null || !this.selectedAno.equals(other.selectedAno))) {
return false;
}
return true;
}
}
O problema ocorre nos Get de Periodos Letivos e Cursos.
Um detalhe que a minha unidade mapeada é uma VIEW.