Pessoal, estou com uma duvida… Tenho duas classes relacionadas:
public class FileDriverVO {
@Id @GeneratedValue
private Integer id;
@Column(length=150)
private String name;
...
}
public class DriverVO {
@Id @GeneratedValue
private Integer id;
@Column(length=40)
private String name;
@Column(length=50)
private String dialect;
@Column(length=80)
private String driver;
@Column(length=20)
private String protocol;
@Column(length=1)
private String reservado;
@OneToMany(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REMOVE})
private List<FileDriverVO> files;
...
Para retornar todos os dados, faço assim na minha classe DAO:
public List<T> findAll() {
return this.session.createCriteria(this.classVO.getName()).list();
}
Qdo chamo o método findAll, ele roda a seguinte instrução SQL:
select
this_.id as id0_1_,
this_.dialect as dialect0_1_,
this_.driver as driver0_1_,
this_.name as name0_1_,
this_.protocol as protocol0_1_,
this_.reservado as reservado0_1_,
files2_.driver_id as driver1_3_,
filedriver3_.id as files2_3_,
filedriver3_.id as id1_0_,
filedriver3_.name as name1_0_
from
driver this_
left outer join
driver_filedrivers files2_
on this_.id=files2_.driver_id
left outer join
filedrivers filedriver3_
on files2_.files_id=filedriver3_.id
A minha dúvida é assim… Eu tenho dois registros na tabela driver e 4 registros na tabela filedrivers (1 registro para o registro 1 da driver e 3 para o registro 2). Só que qdo eu mando carregar os drivers numa JComboBox, ele tá trazendo os 4 registros. Como posso fazer para trazer apenas os dois registros de cabeçalho (driver)?
Obrigado