Salvar imagem no Banco (hibernate + postgress) salva só 6 caracteres

4 respostas
L

Srs. Bom dia,

Estou encontrando uma dificuldade enorme em salvar imagens no meu banco de dados, estou usando - Netbeans 6.8 + Hibernate + Postgress, segue abaixo o código que estou usando, ocorre que quando consulto o banco os dados cadastrados não passam de 6 ou 7 caracteres.

Peço por gentileza caso possam ajudar, já perdi um bom tempo nisso patinando nisso e não saio do lugar.

------------ Minha classe ------------

private void gravaEmpresa() throws FileNotFoundException{
if (listEmpresas.size() == 0){

try {
            //Chama o método pra adicionar todos os dados padrões no sistema,
            // que é a primeira entrada do sistema.
            carrega();
            //Cria uma empresa padrão
            empresas = new Empresa();
            empresas.setId(Long.parseLong("1"));
            empresas.setNomeFantasia("SIG");
            
            
            
            //Ler a imagem do caminho especificado
            logomarca = ImageIO.read(new File("C:/1.jpg"));
            //OBTEM A IMAGEM E TRANSFORMA EM BYTES[]
            ByteArrayOutputStream bytesImg = new ByteArrayOutputStream();
            ImageIO.write((BufferedImage) logomarca, "jpg", bytesImg); //seta a imagem para bytesImg

            bytesImg.flush(); //limpa a variável

// System.out.print(?1º print ? + bytesImg);
byte[] byteArray = bytesImg.toByteArray(); //Converte ByteArrayOutputStream para byte[]
bytesImg.close(); //fecha a conversão

System.out.print(?2º print     ? + byteArray);

            empresas.setLogomarca(byteArray); //erro no banco ... ou no DAO
            
           
            empresaDAO.saveOrUpdate(empresas);

            //Cria Outros atributos padrões
            JOptionPane.showMessageDialog(this, "Entre em cadastros para cadastrar sua empresa!", "Bem Vindo", JOptionPane.PLAIN_MESSAGE);
        } catch (IOException ex) {
            Logger.getLogger(FormLogin.class.getName()).log(Level.SEVERE, null, ex);
        }

    } else{
        setVisible(true);
        usuarios = null;
    }
}

------------ Meu DAO ------------

/**Classe Empresa DAO - Faz as tarefas de inclusão, exclusão, alteração e consultas de Empresas no banco de dados
*São métodos usados para fazer todas alterações necessárias nos registros de Empresas.
**/
package dao;

import entidades.Empresa;

import java.util.List;

import javax.persistence.Query;

import javax.persistence.EntityManager;

import util.Banco;
public class EmpresaDAO {

//Cria um novo objeto de entidade.

EntityManager em;

//Cria um objeto para fazer as consultas.

Query q;

//Construtor da classe que já instacia os objetos para acesso ao banco.

public EmpresaDAO() {

//Objeto de entidade recebe um objeto de entidade real do banco, através da classe Banco.

em = Banco.getInsatance().getEntityManager();

//Cria um objeto para manipular as consultas no banco.

q=em.createQuery(FROM Empresa empres order by empres.nomeFantasia);

}

//Método que faz consulta ao banco de dados através do ID passado como parâmetro.

public Empresa get(Long id){

em.clear();

em.getTransaction().begin();

Empresa empres =em.find(Empresa.class,id);

em.getTransaction().commit();

return empres;
}
//Cria uma consulta de Empresa, e retorna em uma lista de Empresas.
public List<Empresa> select(){
    em.clear();
    em.getTransaction().begin();
    
    List lista=em.createQuery("FROM Empresa empres order by empres.nomeFantasia").getResultList();
    
    em.getTransaction().commit();
    return lista;
}
//Busca de Empresas, passando uma lista de empresas, e um filtro passado como parâmetro.
public List<Empresa> select(String filtro){
    em.clear();
    em.getTransaction().begin();
    
    String hsql;
    hsql = "FROM Empresa empres ";
    hsql += "Where ";
    hsql += " empres.nomeFantasia like :filtro ";

    
    Query query = em.createQuery(hsql);
    query.setParameter("filtro", filtro + "%");
    
    List lista=query.getResultList();
    
    em.getTransaction().commit();
    return lista;
}
//Método para salvar Empresa. Passa um objeto Empresa como parâmetro.
public void saveOrUpdate(Empresa empres){
    em.clear();
    em.getTransaction().begin();
    em.merge(empres);
    em.getTransaction().commit();
}
//Método para deletar Empresa. Passa um objeto Empresa como parâmetro.
public void delete(Empresa empres){
    em.clear();
    em.getTransaction().begin();
    empres = em.find(Empresa.class, empres.getId());
    if (empres!=null){
        em.remove(empres);
    }
    em.getTransaction().commit();
}

public Empresa select(int varlogoempresa) {
    em.clear();
    em.getTransaction().begin();
    Empresa empres =em.find(Empresa.class,varlogoempresa);
    em.getTransaction().commit();
    return empres;
}

}

------------ Minha tabela ------------

/*

  • Pessoa.java

*Classe de Empresa - Generica

  • To change this template, choose Tools | Template Manager
  • and open the template in the editor.
    */

package entidades;

import java.io.Serializable;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.Inheritance;

import javax.persistence.InheritanceType;

import javax.persistence.Lob;

import javax.persistence.ManyToOne;

import javax.persistence.OneToOne;
@Entity

@Inheritance(strategy=InheritanceType.JOINED)

public class Empresa implements Serializable {

@Id

@GeneratedValue(strategy=GenerationType.IDENTITY)

private Long id;

private String razaoSocial;

private String nomeFantasia;

private String cnpj;

private String inscricaoEstadual;

private String endereco;

private String complemento;

private String cep;

private String telefoneFixo;

private String telefoneCelular;

private String grauRisco;

private String numFuncionarios;

private String observacoes;

private boolean flagEmpresaCliente;

private String contato;

private String cargoContato;
@Lob
@Column(name = "testefoto")
private byte[] testefoto;

@Lob
@Column(name = "testefoto")
private byte[] logomarca;


@ManyToOne
private Cidade cidade;
@ManyToOne
private Bairro bairro;
@ManyToOne
private CodAtivEconomica codAtivEconomica;


public Empresa() {
}
public byte[] getTestefoto() {

return testefoto;

}
public void setTestefoto(byte[] testefoto) {
    this.testefoto = testefoto;
}
public byte[]getLogomarca () {

return logomarca;

}
public void setLogomarca (byte[]logomarca) {
    this. logomarca = logomarca;
}


public Cidade getCidade() {
    return cidade;
}

public void setCidade(Cidade cidade) {
    this.cidade = cidade;
}


public String getRazaoSocial() {
    return razaoSocial;
}

public void setRazaoSocial(String razaoSocial) {
    this.razaoSocial = razaoSocial;
}


public String getNomeFantasia() {
    return nomeFantasia;
}

public void setNomeFantasia(String nomeFantasia) {
    this.nomeFantasia = nomeFantasia;
}

public String getEndereco() {
    return endereco;
}

public void setEndereco(String endereco) {
    this.endereco = endereco;
}

public String getComplemento() {
    return complemento;
}

public void setComplemento(String complemento) {
    this.complemento = complemento;
}

public String getCep() {
    return cep;
}

public void setCep(String cep) {
    this.cep = cep;
}



public String getTelefoneFixo() {
    return telefoneFixo;
}

public void setTelefoneFixo(String telefoneFixo) {
    this.telefoneFixo = telefoneFixo;
}

public String getTelefoneCelular() {
    return telefoneCelular;
}

public void setTelefoneCelular(String telefoneCelular) {
    this.telefoneCelular = telefoneCelular;
}    


public String getGrauRisco() {
    return grauRisco;
}

public void setGrauRisco(String grauRisco) {
    this.grauRisco = grauRisco;
} 

public String getNumFuncionarios() {
    return numFuncionarios;
}

public void setNumFuncionarios(String numFuncionarios) {
    this.numFuncionarios = numFuncionarios;
} 

public String getObservacoes() {
    return observacoes;
}

public void setObservacoes(String observacoes) {
    this.observacoes = observacoes;
} 

public boolean getFlagEmpresaCliente() {
    return flagEmpresaCliente;
}

public void setFlagEmpresaCliente(boolean flagEmpresaCliente) {
    this.flagEmpresaCliente = flagEmpresaCliente;
} 

public String getContato() {
    return contato;
}

public void setContato(String contato) {
    this.contato = contato;
} 

public String getCargoContato() {
    return cargoContato;
}

public void setCargoContato(String cargoContato) {
    this.cargoContato = cargoContato;
}

public CodAtivEconomica getCodAtivEconomica() {
    return codAtivEconomica;
}

public void setCodAtivEconomica(CodAtivEconomica codAtivEconomica) {
    this.codAtivEconomica = codAtivEconomica;
}

    public Bairro getBairro() {
    return bairro;
}

public void setBairro(Bairro bairro) {
    this.bairro = bairro;
}

public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public String getCnpj() {
    return cnpj;
}

public void setCnpj(String cnpj) {
    this.cnpj = cnpj;
}

public String getInscricaoEstadual() {
    return inscricaoEstadual;
}

public void setInscricaoEstadual(String inscricaoEstadual) {
    this.inscricaoEstadual = inscricaoEstadual;
}

 /**
 * Retorna um valor de codigo hash para o objeto.  
 */
@Override
public int hashCode() {
    int hash = 0;
    hash += (this.id != null ? this.id.hashCode() : 0);
    return hash;
}



@Override
public boolean equals(Object object) {
    // TODO: Warning - this method won't work in the case the id fields are not set
    if (!(object instanceof Empresa)) {
        return false;
    }
    Empresa other = (Empresa)object;
    if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) return false;
    return true;
}


/**
 * Retorna uma representa��o literal deste objeto.  Esta implementa��o cria
 * uma representa��o baseada nos campos id.
 * @return uma representa��o literal deste objeto.
 */
@Override
public String toString() {
    //return "classes.Empresa[id=" + id + "]";
    return nomeFantasia;
}

}

4 Respostas

F

Cara, coloque os codigos entre as tags ‘code’. Assim fica completamente ilegível.

L

desculpe a ignorancia, mas como faço isso?

L

consegui, abri um novo, tem como deletar esse?

ViniGodoy

Não era necessário abrir um novo tópico. Bastava editar o seu primeiro tópico (existe um botão de edição lá).

Além disso, procure ler a descrição dos fóruns antes de postar. Sua dúvida é de Hibernate, deveria ter sido aberta no fórum de Persistência.

Esse tópico será trancado, quem quiser ajudar, use:

Criado 10 de setembro de 2011
Ultima resposta 11 de set. de 2011
Respostas 4
Participantes 3