Estou com o seguinte problema. Quando executo o código abaixo, o método criteria.list() me retorna resultados repetidos
Criteria criteria = session.createCriteria(this.objClass);
criteria.addOrder(Order.asc(orderBy));
final List<T> result = criteria.list();
Estou mandado listar a classe ListaCadastro. Segue as 3 classes do meu domínio
@Entity(name = "LISTAS_LISTA_CADASTRO")
public class ListaCadastro implements Serializable {
public enum TpProva {OBJETIVA, PRATICA, OUTRA};
@Id
private String spi;
@Enumerated(EnumType.STRING)
private TpProva tpProva;
private String dtCriacao;
private String dtNecessidade;
@Column(length=2000)
private String dsOutros;
@Column(length=2000)
private String observacao;
@Transient
private String tpLista = "cadastro";
@Embedded
private ListaDeSublistas sublistas;
public ListaCadastro() {
sublistas = new ListaDeSublistas();
}
public void adicionarSublista(SubLista sublista) {
sublista.setIdSublista(this.getSpi() + "_" + sublista.getTpSublista());
sublistas.add(sublista);
}
public List<SubLista> getSublistas() {
return sublistas.getSublistas();
}
}
@Embeddable
public class ListaDeSublistas implements Serializable {
@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
@JoinTable(name = "LISTAS_LISTACADASTRO_SUBLISTA", joinColumns = {@JoinColumn(name="spi")}, inverseJoinColumns={@JoinColumn(name="idSublista")})
private List<SubLista> sublistas = new ArrayList<SubLista>();
}
@Entity
public class SubLista implements Serializable {
public enum Tipo {
DISQUETE_CONSULTA("Disquete Consulta FCC"),
LISTA_ALFA_COLEGIO("Lista alfa colégio"),
LISTA_ALFA_POSTO("Lista alfa posto"),
LISTA_CADASTRO("Lista de Cadastro (Alfa geral)"),
LISTA_PRESENCA("Lista de presenca com espaço para assinatura"),
LISTA_SALA_DUPLO_LINGUA("Lista de sala - fomato duplo (c/ mist. de língua)"),
LISTA_SALA_DUPLO_HORARIO("Lista de sala - formato duplo (com horário)"),
LISTA_SALA_SIMPLES("Lista de sala - formato simples"),
RELATORIO_INSCRICAO("Relatório com nº de inscrição e tipo de prova"),
RELATORIO_RESERVA_PROVAS("Relatório de reserva de provas");
private String descricao;
Tipo(String descricao) {
this.descricao = descricao;
}
}
private static final long serialVersionUID = 1L;
@Id
private String idSublista;
@Enumerated(EnumType.STRING)
private Tipo tpSublista;
private String especificacao;
@Transient
private FileItem fileItem;
}
Ou seja, 1 ListaCadastro tem 1 ListaDeSubListas que tem n SubListas
o problema é que quando mando listar as ListaCadastro, ele lista 1x para cada SubLista que essa ListaCadastro possua
alguém sabe por que isso acontece?