GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Imagem no mysql com java e primefaces

Boa noite a todos. Preciso persistir uma imagem no banco de dados mysql, estou usando java web, primefaces, mysql e maven no projeto. Tentei de todas as formas, usando a documentação do componente do primefaces: p:fileUpload, coloquei as dependencias, os filtros no web.xml, tudo, ele ate chega ate o ManagedBean, mas na hora de gravar no banco nao vai, de forma alguma, vou postar as partes mais importantes do código:
Na classe de modelo: Adolescente.java, tenho as variáveis mapeadas para o banco, a variável correspondente à foto é:
@Lob
@Column(name=“ado_foto”)
private byte[] foto; (Os get e set estão presentes normalmente na classe)

No managedBean eu tenho o componente fileUpload do primefaces chamando o metodo para fazer o upload da imagem:
<p:fileUpload id=“foto” style=“width:100%” mode=“advanced” fileUploadListener="#{adolescenteBean.upload}" update=“messages” auto=“true”/>

E aqui o metodo que faz a atribuição do arquivo da foto na variavel para compor o objeto e gravar no banco:
public void upload(FileUploadEvent evento) {
(esse file é uma variavel do tipo UploadedFile, foi so um teste)
this.file = evento.getFile();
System.out.println("Nome do arquivo: " + file.getFileName());
this.adolescente.setFoto(file.getContents()); //array de bytes

}

até aqui, onde o arquivo é recebido pelo metodo vai tranquilo, agora fazer a variavel receber
esse aquivo pelo parametro e “setar” no objeto é que ta pegando…tipo a variavel this.adolescente.setFoto(), eu ja coloquei todas as opções desse parametro e nada faz ele gravar no banco de dados.
Se alguém puder me dar uma luz mais uma vez eu agradeço.

att

PAULO

Acredito que você não tenha tentado todas as formas possíveis. Em todo caso, o “não vai” significa o que? Exceção?

Quando postar trechos de código, favor usar o recurso de formatação.
Selecione o mesmo e clique no botão </> acima do editor.

Desculpe por nao colocar o código de maneira correta. Bom, dizer que “não vai” quer dizer que não grava no banco, o arquivo, o dado, a informação, não vai pro banco, entendeu? Para melhorar o entendimento e acredito que para me ajudar nesse problema, vamos deixar de lado o código em si, nos atentemos ao ponto que estou com dificuldade. Eu tenho um bean gerenciado que instancia um objeto que é uma entidade que por sua vez representa uma tabela no banco. Nessa classe tenho uma propriedade do tipo byte[] que será a foto do individuo.
@Lob @Column(name="ado_foto") private byte[] foto;
Ela está mapeada assim na classe. É nesta propriedade, atraves do metodo set, que eu preciso que o arquivo da foto chegue, justamente pra compor o objeto e assim o restante dos componetes possam fazer seu trabalho de gravar no banco. Entao até no metodo do bean gerenciado o arquivo está chegando:
public void upload(FileUploadEvent evento) {
try {

	 UploadedFile arquivoUpload = evento.getFile();  <<--Até aqui tudo bem, se eu escrever: arquivoUpload.getFileName(); ele vai retornar o nome do arquivo que está nesta variavel do tipo UploadedFile. Daqui pra frente como você faria para gravar no banco, ou melhor, pra atribuir esse arquivo a minha propriedade, do tipo byte[], para que eu possa compor o objeto dessa maneira: this.<ojbeto instanciado>.setFoto(<aqui vai a variavel>);

Como eu disse eu ja fiz de diversas maneiras, pelo menos as documentadas, e continua gravando null no banco. Voce pode ma ajudar por favor.

E se o problema for, justamente, o código?

Fazemos igual Jack o estripador: vamos por partes. Até o Bean tá chegando, a partir daí, para carregar a variável usando o método set correspondente, como proceder?

//