Estou desenvolvendo minha primeira aplicação em java, aplicação desktop com Netbeans e hibernate.
Tenho as tabelas membros e estadocivil. O membro possui um estadocivol. Mapeei as classes utilizando o Hibernate e na classe Membros ele criou o atributo EstadoCivil. Meu select no hibernate é “from membros mb join mb.EstadoCivil”. Meu problema é que está sendo retornada uma lista de objetos, e não de membros, e não consigo recuperar os dados. Minha pergunda é como retornar uma lista de Membros ou converter o object em Membros? Segue abaixo o códogo:
public List<Membros> Select() {
List<Membros> lista = new ArrayList<Membros>();
try {
this.sessao = Sessao.getSessao();
transacao = sessao.beginTransaction();
query = sessao.createQuery("from Membros");
lista = query.list();
sessao.close();
}
catch (HibernateException e) {
JOptionPane.showMessageDialog(null, "Erro ao realizar consulta!\n" + e.getMessage(), null,
JOptionPane.ERROR_MESSAGE);
}
return lista;
}
Como você está fazendo um join, isso não vai retornar uma lista de Membro e sim uma lista de Object[], onde cada elemento do array correponderá à uma coluna do registro retornado.
Mas existe algum meio de transformar em uma lista de Membros?
Tenta alterar a query para
from Membros mb LEFT OUTER join mb.EstadoCivil EstadoCivil
E o list :
lista = (List<Membros>) query.list();
Não faz sentido, pois como você fez um join, você também estará trazendo valores de outra tabela, em quais atributos de Membro você vai setar os atributos que são exclusivos de EstadoCivil?
É por isso que o hibernate te traz um array com os valores, pois nessa caso não existe uma entidade para mapear estes resultados.
Acho que o mais fácil seria criar uma entidade para este relacionamento, uma classe MembroEstadoCivil por exemplo, e nela mapear o Membro e o EstadoCivil.
Quando fiz o mapeamento, através de engenharia reversa, ele criou um atributo estado civil em membros, então achei que com join ele popularia este atributo, mas pelo que estou vendo ele não faz isso.
Tentei o código acima mas continua retornando uma lista de objetos. Na verdade retorna um array bidimensional, o primeiro nível é object[], no segundo nível tem a classe membros e a estadoCivil, mas não sei como percorrer o array para pegar os dados, Preciso popular uma tela com estes dados. Se alguém souber como percorro o array para extrair os dados já ajudaria muito. Obrigado.
Por favor tem como colocar a classe mapeada aqui
Segue a classe e o arquivo de mapeamento. Lembrando que gerei a classe através de engenharia reversa.
public class Membros implements java.io.Serializable {
private Integer idMembro;
private EstadoCivil estadoCivil;
private String nome;
private String celular;
private String telefone;
private String email;
private String nomePai;
private String nomeMae;
private String conjuge;
private char colaborador;
private char transferido;
private Date dataBatizado;
private Date dataConsagracao;
private int numeroRoll;
private String observacao;
private Set membroFuncaos = new HashSet(0);
public Membros() {
}
public Membros(EstadoCivil estadoCivil, String nome, String celular, String telefone, String email, String nomePai, String nomeMae, char colaborador, char transferido, int numeroRoll) {
this.estadoCivil = estadoCivil;
this.nome = nome;
this.celular = celular;
this.telefone = telefone;
this.email = email;
this.nomePai = nomePai;
this.nomeMae = nomeMae;
this.colaborador = colaborador;
this.transferido = transferido;
this.numeroRoll = numeroRoll;
}
public Membros(EstadoCivil estadoCivil, String nome, String celular, String telefone, String email, String nomePai, String nomeMae, String conjuge, char colaborador, char transferido, Date dataBatizado, Date dataConsagracao, int numeroRoll, String observacao, Set membroFuncaos) {
this.estadoCivil = estadoCivil;
this.nome = nome;
this.celular = celular;
this.telefone = telefone;
this.email = email;
this.nomePai = nomePai;
this.nomeMae = nomeMae;
this.conjuge = conjuge;
this.colaborador = colaborador;
this.transferido = transferido;
this.dataBatizado = dataBatizado;
this.dataConsagracao = dataConsagracao;
this.numeroRoll = numeroRoll;
this.observacao = observacao;
this.membroFuncaos = membroFuncaos;
}
public Integer getIdMembro() {
return this.idMembro;
}
public void setIdMembro(Integer idMembro) {
this.idMembro = idMembro;
}
public EstadoCivil getEstadoCivil() {
return this.estadoCivil;
}
public void setEstadoCivil(EstadoCivil estadoCivil) {
this.estadoCivil = estadoCivil;
}
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCelular() {
return this.celular;
}
public void setCelular(String celular) {
this.celular = celular;
}
public String getTelefone() {
return this.telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public String getEmail() {
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
public String getNomePai() {
return this.nomePai;
}
public void setNomePai(String nomePai) {
this.nomePai = nomePai;
}
public String getNomeMae() {
return this.nomeMae;
}
public void setNomeMae(String nomeMae) {
this.nomeMae = nomeMae;
}
public String getConjuge() {
return this.conjuge;
}
public void setConjuge(String conjuge) {
this.conjuge = conjuge;
}
public char getColaborador() {
return this.colaborador;
}
public void setColaborador(char colaborador) {
this.colaborador = colaborador;
}
public char getTransferido() {
return this.transferido;
}
public void setTransferido(char transferido) {
this.transferido = transferido;
}
public Date getDataBatizado() {
return this.dataBatizado;
}
public void setDataBatizado(Date dataBatizado) {
this.dataBatizado = dataBatizado;
}
public Date getDataConsagracao() {
return this.dataConsagracao;
}
public void setDataConsagracao(Date dataConsagracao) {
this.dataConsagracao = dataConsagracao;
}
public int getNumeroRoll() {
return this.numeroRoll;
}
public void setNumeroRoll(int numeroRoll) {
this.numeroRoll = numeroRoll;
}
public String getObservacao() {
return this.observacao;
}
public void setObservacao(String observacao) {
this.observacao = observacao;
}
public Set getMembroFuncaos() {
return this.membroFuncaos;
}
public void setMembroFuncaos(Set membroFuncaos) {
this.membroFuncaos = membroFuncaos;
}
}
<?xml version="1.0"?>
Edite seu post, selecione o código java e clique em </>
Faça o mesmo com o código XML, selecione ele e clique em </>