Galera, tenho uma tabela Funcionario onde eu exibo todos os funcionarios numa datatable
Soh que no meu DAO, no metodo de trazer a lista de funcionarios (Utilizando Criteria) esta trazendo uma qt diferente da que esta no banco de dados.
Classe funcionario:
@Entity
public class Funcionario
{
........
@OneToMany(mappedBy="funcionario", fetch=FetchType.EAGER)
@Cascade(CascadeType.ALL)
private List<Ponto> pontos = new ArrayList<Ponto>();
.........
Classe Ponto:
@Entity
public class Ponto
{
...........
@ManyToOne(fetch=FetchType.EAGER)
@JoinColumn(name="id_funcionario", nullable=false)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Funcionario funcionario;
...........
Linha do datatable:
<rich:dataTable id="table" width="100%" var="fc" value="#{funcionarioTableMBean.list}" binding="#{funcionarioTableMBean.objLinha}" onRowMouseOver="this.style.backgroundColor='#CCC'" onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'">
Metodo getList():
public List<Funcionario> getList() {
if(nomeBusca != "")
buscaFuncionario();
else
getTodosOsFuncionarios();
return list;
}
Metodo getTodosOsFuncionarios():
public String getTodosOsFuncionarios(){
FuncionarioDAO dao = new FuncionarioDAO();
list = dao.list();
HibernateUtil.closeSession();
return null;
}
E finalmente o DAO:
@SuppressWarnings("unchecked")
public List<T> list() {
try {
System.out.println(clazz.getName());
Criteria busca = HibernateUtil.getSession().createCriteria(this.clazz);
System.out.println(busca.list().size());
return busca.list();
} catch (RuntimeException re) {
throw re;
}
}
Quando eu adiciono um PONTO no FUNCIONARIO ele executa o metodo de ADICIONARPONTO e reRenderiza a datatable que exibe todos os funcionarios da tabela Funcionario
atravez desse metodo List do DAO
soh que na minha tabela soh tem 2 funcionarios por exemplo
e ele nao sei porque me retorna funcionarios repetidos de acordo com a qt de pontos…
Alguem pode me explicar ?
se eu faco -->> Criteria busca = HibernateUtil.getSession().createCriteria(this.clazz);
ele nao deveria retornar apenas o que tem na tabela Funcionario ?
porque ele esta repetindo de acordo com os pontos que vou adicionando ?
Exemplo:
tenho 2 funcionarios na tabela Funcionario
o primeiro tem 3 pontos
o segundo tem 2
entao ele ta exibindo 5 Funcionarios na tabela, invez de 2
Agradeço desde já…