DAO Method Can not Save Image

1

My bean class is already able to save the image in my specific directory, I know this because I did a test, but only it fails to save the String which is the name of the file that makes FileUpload in the database

I'm going to 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 am trying to write to the image string in the

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;
    }

}

This is the piece of code I'm having trouble with

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

I am trying to change this method to save the name of the image in the bank, being that I am not able to

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.

    
asked by anonymous 19.05.2015 / 20:51

0 answers