DAO Method Cannot Save Image

Asked

Viewed 120 times

1

My bean class can already save the image in my specific directory,I know this because I did a test, but it only needs to be able to save the String that is the name of the file I do Fileupload in the database

I will show part of the product entity

@Entity
@Table(name = "tbl_produtos")
@NamedQueries({
    @NamedQuery(name = "Produto.listar", query = "SELECT p from Produto p"),
    @NamedQuery(name = "Produto.Imagem", query = "INSERT INTO Produto (IMAGEM)" + "VALUES(?)"),
    @NamedQuery(name = "Produto.buscarPorCodigo", query = "SELECT p from Produto p where p.codigo = :codigo") })

public class Produto {



private String imagem;

contains other attributes and also contains the Getts and setts of the image attribute.

this is the bean class I’m trying to record the image string in the database

package br.com.drogaria.bean;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import org.apache.commons.fileupload.FileUpload;
import org.primefaces.model.UploadedFile;

import br.com.drogaria.dao.ProdutoDAO;
import br.com.drogaria.domain.Produto;

@ManagedBean
@SessionScoped
public class FileuploadBean implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    private String destination = "C:\\tmp\\";
    private UploadedFile file;
    Produto produto;
    ProdutoDAO produtoDAO = new ProdutoDAO();

    public FileuploadBean() {

    }

    public void TransferFile(String fileName, InputStream in) {
        try {
            OutputStream out = new FileOutputStream(new File(destination
                    + fileName));
            int reader = 0;
            byte[] bytes = new byte[(int) getFile().getSize()];
            while ((reader = in.read(bytes)) != -1) {
                out.write(bytes, 0, reader);
            }
            in.close();
            out.flush();

        } catch (IOException e) {
            System.out.println(e.getMessage());
        }

    }

    public void upload() {
        String extValidate;
        if (getFile() != null) {
            String ext = getFile().getFileName();
            if (ext != null) {
                extValidate = ext.substring(ext.indexOf(".") + 1);
            } else {
                extValidate = "null";
            }

            if (extValidate.equals("jpg") || extValidate.equals("png")) {
                try {
                    TransferFile(getFile().getFileName(), getFile()
                            .getInputstream());
                } catch (IOException ex) {

                    Logger.getLogger(FileUpload.class.getName()).log(
                            Level.SEVERE, null, ex);
                    FacesContext context = FacesContext.getCurrentInstance();
                    context.addMessage(null, new FacesMessage(
                            "Perigo, erro ao fazer Upload do arquivo"));
                }
                FacesContext context = FacesContext.getCurrentInstance();
                context.addMessage(null, new FacesMessage("Sucesso", getFile()
                        .getFileName()
                        + "seu upload. conteudo"
                        + getFile().getContentType()
                        + "tamanho"
                        + getFile().getSize()));

            } else {
                FacesContext context = FacesContext.getCurrentInstance();
                context.addMessage(null, new FacesMessage("Perigo",
                        "o arquivo tem que ser pdf"));

            }
        } else {

            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(
                    "Perigo, selecione o arquivo"));
        }

        String nomeAquivo = "";
        nomeAquivo = getFile().getFileName();
        System.out.println(destination + "nome do arquivo" + " " + nomeAquivo);
        produto.setImagem(nomeAquivo);
        produtoDAO.gravarImagem(produto);

    }

    public String getDestination() {
        return destination;
    }

    public void setDestination(String destination) {
        this.destination = destination;
    }

    public UploadedFile getFile() {
        return file;
    }

    public void setFile(UploadedFile file) {
        this.file = file;
    }

}

That’s the piece of code I’m struggling with

String nomeAquivo = "";
nomeAquivo = getFile().getFileName();
System.out.println(destination + "nome do arquivo" + " " + nomeAquivo);
produto.setImagem(nomeAquivo);
produtoDAO.gravarImagem(produto);

I’m trying to change this method to record the name of the image in the bank, and I’m not getting

public Produto gravarImagem(Produto produto) {

        Session sessao = HibernateUtil.getSessionFactory().openSession();
        Produto produtos = null;
        try {

            Query inseri_imagem = sessao.getNamedQuery("Produto.Imagem");
            inseri_imagem.setString(null, produto);

            produtos = (Produto) inseri_imagem.uniqueResult();
        } catch (RuntimeException ex) {
            throw ex;
        } finally {
            sessao.close();
        }
        return produtos;

    }

I’m using a JSF project with Hibernate in a DAO model.

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.