Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

JorgitoDF

Acessar atributo de uma Classe Estendida numa Classe DAO

Recommended Posts

Boa tarde,

Sou iniciante em JAVA, será que alguém aqui pode me ajudar numa questão?
Preciso acessar um atributo de uma classe estendida a partir de uma Classe DAO, não estou conseguindo quem puder me ajudar a resolver isso agradeço desde já...
Classe Pai:
public class ClienteBEAN {
 
private Integer id_cliente;
private Integer fk_id_segmento;
private Long cli_cnpj;
private String cli_nome_cliente;
private String cli_sigla;
 
 
public ClienteBEAN() {
}
 
public ClienteBEAN(Integer id_cliente, Integer fk_id_segmento, Long cli_cnpj, String cli_nome_cliente, String cli_sigla) {
this.id_cliente = id_cliente;
this.fk_id_segmento = fk_id_segmento;
this.cli_cnpj = cli_cnpj;
this.cli_nome_cliente = cli_nome_cliente;
this.cli_sigla = cli_sigla;
}
 
 
public Integer getId_cliente() {
return id_cliente;
}
 
public void setId_cliente(Integer id_cliente) {
this.id_cliente = id_cliente;
}
 
public Integer getFk_id_segmento() {
return fk_id_segmento;
}
 
public void setFk_id_segmento(Integer fk_id_segmento) {
this.fk_id_segmento = fk_id_segmento;
}
 
public Long getCli_cnpj() {
return cli_cnpj;
}
 
public void setCli_cnpj(Long cli_cnpj) {
this.cli_cnpj = cli_cnpj;
}
 
public String getCli_nome_cliente() {
return cli_nome_cliente;
}
 
public void setCli_nome_cliente(String cli_nome_cliente) {
this.cli_nome_cliente = cli_nome_cliente;
}
 
public String getCli_sigla() {
return cli_sigla;
}
 
public void setCli_sigla(String cli_sigla) {
this.cli_sigla = cli_sigla;
}
 
@Override
public String toString() {
return "ClienteBEAN [id_cliente=" + id_cliente + ", fk_id_segmento="
+ fk_id_segmento + ", cli_cnpj=" + cli_cnpj
+ ", cli_nome_cliente=" + cli_nome_cliente + ", cli_sigla="
+ cli_sigla + "]";
}
 
 
}
Classe Filha
public class GovernoBEAN extends ClienteBEAN {
 
private Integer cli_uasg;
private String cli_unidade_vinculada;
 
 
public GovernoBEAN() {
}
 
public GovernoBEAN(Integer fk_id_segmento, Integer cli_uasg, String cli_unidade_vinculada) {
this.cli_uasg = cli_uasg;
this.cli_unidade_vinculada = cli_unidade_vinculada;
}
 
 
public Integer getCli_uasg() {
return cli_uasg;
}
 
public void setCli_uasg(Integer cli_uasg) {
this.cli_uasg = cli_uasg;
}
 
public String getCli_unidade_vinculada() {
return cli_unidade_vinculada;
}
 
public void setCli_unidade_vinculada(String cli_unidade_vinculada) {
this.cli_unidade_vinculada = cli_unidade_vinculada;
}
 
@Override
public String toString() {
return "GovernoBEAN [cli_uasg=" + cli_uasg + ", cli_unidade_vinculada="
+ cli_unidade_vinculada + "]";
}
 
}
Classe DAO
public class ClienteDAO implements IDAO<ClienteBEAN> {
 
public void save(ClienteBEAN entidade) throws PersistenciaException {
 
        Connection conn = Conexao.open();
        
        PreparedStatement pstm = null;
        
        String sql = "INSERT INTO tb_cliente(fk_id_segmento, cli_uasg, cli_cnpj, cli_inscricao_estadual, cli_data_abertura, cli_nome_cliente, "
        + "cli_sigla, cli_unidade_vinculada) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
        
        try {
       
            pstm = conn.prepareStatement(sql);
            pstm.setInt(1, entidade.getFk_id_segmento());
            pstm.setInt(2, entidade.getFk_id_segmento());
            pstm.setLong(3, entidade.); //preciso acessar aqui o atributo cli_uasg que está na Classe Filha.....
            
            pstm.setString(6, entidade.getCli_nome_cliente());
            pstm.setString(7, entidade.getCli_sigla());
 
            
            pstm.executeUpdate();
            
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            Conexao.close(conn, pstm, null);
        }
}
 
 
 
 
public int findMaxId() {
 
        Connection conn = Conexao.open();
        
        PreparedStatement pstm = null;
        
        ResultSet rs = null;
        
        String sql = "SELECT MAX(id_cliente) FROM tb_cliente";
        
        int id = 0;
        
        try {
       
            pstm = conn.prepareStatement(sql);
            rs = pstm.executeQuery();
            
            if (rs.next()) {
            id = rs.getInt(1);
            }
            
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            Conexao.close(conn, pstm, rs);
        }
        return id;
    }
 
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aparentemente as duas classes estão no mesmo package. Então você terá que fazer apenas uma coisa: mudar o encapsulamento dos atributos da classe ClienteBEAN de private para protected. Se for private, nenhuma outra classe tem acesso aos atributos, mesmo que seja filha. Quando é protected, todas as classes no mesmo package tem acesso aos atributos desta classe, inclusive as filhas.

 

Então talvez você tenha si perguntado: E as outras classes que não são extendidas, como impeço o acesso dessas aos atributos da classe mãe?

Você deve colocar as que não extendem de ClienteBEAN em um package diferente. A classe mãe e suas classes filhas devem compartilhar os mesmo package. Assim você faz o empacotamento corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.