Agradeço a resposta, se puder me ajudar, faz 2 dias que estou nisso… 
Olha só, tenho a classe DTO com as seguintes informações para:
private char ativo;
public char getAtivo() {
return ativo;
}
public void setAtivo(char ativo) {
this.ativo = ativo;
}
public boolean getStatus(){
return getAtivo()=='a';
}
public void setStatus(boolean status){
setAtivo( status?'a':'i');
}
Depois tenho a lista que recebo assim:
<p:dataTable value="#{usuario.listar}" var="usuarioDTO" border="1">
Depois aquele código que postei anteriormente,
Meu listar vem assim:
public List getListar() {
List lista = new ArrayList();
try {
UsuarioDAO usuarioDAO = new UsuarioDAO();
lista = usuarioDAO.listar();
} catch (SQLException ex) {
Logger.getLogger(Usuario.class.getName()).log(Level.SEVERE, null, ex);
}
return lista;
}
Que faz isso:
public List listar() throws SQLException {
String sql = "select u.usuario_ID, u.nome, u.salario, u.sexo, u.dataNascimento, u.ativo, u.cargo_id, "
+ " c.descricao from usuario u "
+ " inner join cargo c on c.cargo_id = u.cargo_id";
ResultSet rs = database.getConnection().createStatement().executeQuery(sql);
List listaUsuario = new ArrayList();
while (rs.next()) {
listaUsuario.add(preencherUsuarioDTO(rs));
}
rs.close();
database.getConnection().close();
return listaUsuario;
}
e que complementa isso:
private Object preencherUsuarioDTO(ResultSet rs) throws SQLException {
UsuarioDTO usuarioDTO = new UsuarioDTO();
usuarioDTO.setUsuario_ID(rs.getInt("usuario_ID"));
usuarioDTO.setNome(rs.getString("nome"));
usuarioDTO.setAtivo(rs.getString("ativo").charAt(0));
usuarioDTO.setDataNascimento(rs.getDate("dataNascimento"));
usuarioDTO.setSalario(rs.getDouble("salario"));
usuarioDTO.setSexo(rs.getInt("sexo"));
usuarioDTO.getCargoDTO().setCargo_id(rs.getInt("cargo_id"));
usuarioDTO.getCargoDTO().setDescricao(rs.getString("descricao"));
return usuarioDTO;
}