Hibernate repetindo valor do primeiro Resultado

21/08/2018

3

Galera,

Estou realizando uma consulta usando o Hibernate para trazer resultados de uma view no oracle, essa view retorna 5 dados que são (ID, DADO1, DADO2, ACDADO3, ACDADO4, ACDADO5, ACDADO6).

E execução funciona e ele me traz uma lista de resultados, sendo que nessa lista de resultados eu estou tendo a informação ACDADO3, ACDADO34, ACDADO5, ACDADO6 repetidos com a informação do primeiro resultado, ja ouvi falar que era para definir como @ID a cada linha que poderia se repetir, sem sucesso.

Abaixo meu código:

currentSession = getCurrentSession();
			
Criteria criteria = currentSession.createCriteria(br.gov.rj.sefaz.smdc.business.efd.entity.viewProcessamentoHora.class);
criteria.addOrder(Order.asc("dtPeriodo1"));
List<viewProcessamentoHora> teste;
teste = criteria.list();
					
for( int a = 0; a < teste.size(); a++)
{
System.out.println(teste.get(a).toString());
}



Entidade

@Entity
@Table(name = "VW_EFD_CARGA_HORA")
public class viewProcessamentoHora implements Serializable{

	private static final long serialVersionUID = 1L;

	@Id
	@Column(name = "SQ_PERIODO")
	private int dtPeriodo1;

	@Id
	@Column(name = "DT_PERIODO")
	private String dtPeriodo;
	
	@Id
	@Column(name = "AC_TOTAL_OIE")
	private String totalOie;
	
	@Id
	@Column(name = "AC_TOTAL_EFD")
	private String totalEfd;

	@Id
	@Column(name = "AC_TOTAL_TRANS_OIE")
	private String totalTransOie;

	@Id
	@Column(name = "AC_TOTAL_TRANS_EFD")
	private String totalTransEfd;

	public String getDtPeriodo() {
		return dtPeriodo;
	}

	public String getTotalOie() {
		return totalOie;
	}

	public String getTotalEfd() {
		return totalEfd;
	}

	public void setDtPeriodo(String dtPeriodo) {
		this.dtPeriodo = dtPeriodo;
	}

	public void setTotalOie(String totalOie) {
		this.totalOie = totalOie;
	}

	public void setTotalEfd(String totalEfd) {
		this.totalEfd = totalEfd;
	}

	public String getTotalTransOie() {
		return totalTransOie;
	}

	public String getTotalTransEfd() {
		return totalTransEfd;
	}

	public void setTotalTransOie(String totalTransOie) {
		this.totalTransOie = totalTransOie;
	}

	public void setTotalTransEfd(String totalTransEfd) {
		this.totalTransEfd = totalTransEfd;
	}

	public int getDtPeriodo1() {
		return dtPeriodo1;
	}

	public void setDtPeriodo1(int dtPeriodo1) {
		this.dtPeriodo1 = dtPeriodo1;
	}

	@Override
	public String toString() {
		return "viewProcessamentoHora [dtPeriodo1=" + dtPeriodo1 + ", dtPeriodo=" + dtPeriodo + ", totalOie=" + totalOie
				+ ", totalEfd=" + totalEfd + ", totalTransOie=" + totalTransOie + ", totalTransEfd=" + totalTransEfd
				+ "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((dtPeriodo == null) ? 0 : dtPeriodo.hashCode());
		result = prime * result + dtPeriodo1;
		result = prime * result + ((totalEfd == null) ? 0 : totalEfd.hashCode());
		result = prime * result + ((totalOie == null) ? 0 : totalOie.hashCode());
		result = prime * result + ((totalTransEfd == null) ? 0 : totalTransEfd.hashCode());
		result = prime * result + ((totalTransOie == null) ? 0 : totalTransOie.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (obj == null) {
			return false;
		}
		if (!(obj instanceof viewProcessamentoHora)) {
			return false;
		}
		viewProcessamentoHora other = (viewProcessamentoHora) obj;
		if (dtPeriodo == null) {
			if (other.dtPeriodo != null) {
				return false;
			}
		} else if (!dtPeriodo.equals(other.dtPeriodo)) {
			return false;
		}
		if (dtPeriodo1 != other.dtPeriodo1) {
			return false;
		}
		if (totalEfd == null) {
			if (other.totalEfd != null) {
				return false;
			}
		} else if (!totalEfd.equals(other.totalEfd)) {
			return false;
		}
		if (totalOie == null) {
			if (other.totalOie != null) {
				return false;
			}
		} else if (!totalOie.equals(other.totalOie)) {
			return false;
		}
		if (totalTransEfd == null) {
			if (other.totalTransEfd != null) {
				return false;
			}
		} else if (!totalTransEfd.equals(other.totalTransEfd)) {
			return false;
		}
		if (totalTransOie == null) {
			if (other.totalTransOie != null) {
				return false;
			}
		} else if (!totalTransOie.equals(other.totalTransOie)) {
			return false;
		}
		return true;
	}


Guilherme Carneiro

Guilherme Carneiro

Responder

Post mais votado

24/08/2018

Você verificou no banco de dados para ver se a view não está repetindo esses dados lá? Porque é meio improvável que o Hibernate faça isso por conta própria, ainda mais para uma view que já tem os dados prontos. Ou talvez alguma operação ao listar os dados que está gerando essa repetição.

Marcio Souza

Marcio Souza
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar