Ola pessoal, tenho uma JTable com a model assim:
public class MembroTableModel extends AbstractTableModel {
List<Membro> linhas;
private String[] colunas = new String[] {"Nome","Ativo","Idade","Estado Civil","Sexo","Cargo"};
public MembroTableModel(){
linhas = new ArrayList<Membro>();
}
@Override
public int getRowCount() {
return linhas.size();
}
@Override
public int getColumnCount() {
return colunas.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Membro m = linhas.get(rowIndex);
Boolean ativo = m.isAtivo();
switch(columnIndex){
case 0:
return m.getDadosPessoa().getNomeCompleto();
case 1:
return ativo;
case 2:
return DateUtil.getIdade(m.getDadosPessoa().getDataNascimento());
case 3:
return m.getDadosPessoa().getEstadoCivil();
case 4:
return m.getDadosPessoa().getSexo();
case 5:
return m.getMembresia().getCargoOrigem();
}
return null;
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
// Pega o sócio referente a linha especificada.
Membro membro = linhas.get(rowIndex);
switch (columnIndex) {
case 1:
membro.getDadosPessoa().setNomeCompleto((String)aValue);
case 2:
membro.setAtivo((Boolean)aValue);
case 3:
membro.getDadosPessoa().setEstadoCivil((String)aValue);
case 4:
membro.getDadosPessoa().setSexo((Sexo)aValue);
case 5:
membro.getMembresia().setCargoOrigem((String)aValue);
}
fireTableCellUpdated(rowIndex, columnIndex); // Notifica a atualização da célula
};
@Override
public Class<?> getColumnClass(int columnIndex) {
switch(columnIndex){
case 1:
return String.class;
case 2:
return Boolean.class;
case 3:
return String.class;
case 4:
return String.class;
case 5:
return String.class;
default:
return String.class;
}
};
@Override
public String getColumnName(int column) {
return colunas[column];
}
public void limpar(){
linhas.clear();
fireTableDataChanged();
}
public boolean isEmpty() {
return linhas.isEmpty();
}
public void addListMembros(List<Membro> membro) {
// Pega o tamanho antigo da tabela.
int tamanhoAntigo = getRowCount();
// Adiciona os registros.
linhas.addAll(membro);
// Reporta a mudança. O JTable recebe a notificação
// e se redesenha permitindo que visualizemos a atualização.
fireTableRowsInserted(tamanhoAntigo, getRowCount() - 1);
}
public Membro getMembroSelected(int rowIndex){
return linhas.get(rowIndex);
}
}
@Entity
public class Membro implements IAtivo{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer idMembro;
@Lob
private byte[] foto;
@Column
private boolean ativo;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="idPessoaFisica")
private PessoaFisica dadosPessoa;
@Column(length=50)
private String nomePai;
@Column(length=50)
private String nomeMae;
@OneToOne
private Cidade cidadeNascimento;
@Temporal(TemporalType.DATE)
private Date dataCasamento;
@Column
private String conjuge;
@Column(length=2)
private Integer qtdeFilhos;
@ManyToOne(cascade=CascadeType.ALL)
@JoinColumn(name="idMembroHistorico")
private MembroHistorico membresia;
// GETTERS AND SETTERS
}
No banco está como Ativo = 1 porem o hibernate transforma para true no objeto como pode ver na imagem:
/////////////////////// CORREÇÃO
Fiz uma classe enum para as colunas assim como o Vinigodoy recomendou e agora esta funcionando corretamente.