Estou tentando fazer um upload usando primefaces, hibernate, mysql.
no banco de dados ta como BLOB
o erro é o seguinte:
PASSO AQUI
tamanho da foto na hora de salvar595284
04/04/2012 08:38:10 org.hibernate.util.JDBCExceptionReporter logExceptions
AVISO: SQL Error: 1406, SQLState: 22001
04/04/2012 08:38:10 org.hibernate.util.JDBCExceptionReporter logExceptions
GRAVE: Data truncation: Data too long for column 'foto' at row 1
pelo que eu vi neste tópico (e em outros) http://www.guj.com.br/java/268526-gravar-imagem-no-banco-de-dados---hibernatevraptor
ta certo…
tenho o seguinte:
visao:
<p:dialog widgetVar="dialogo">
<h:form enctype="multipart/form-data">
<p:fileUpload id="arquivos" label="Selecionar"
multiple="false" auto="true"
fileUploadListener="#{gerenciarUsuarioController.fileUploadAction}"/>
</h:form>
</p:dialog>
mb - controller:
[quote] public void fileUploadAction(FileUploadEvent event) throws IOException {
String nomeArquivoSelecionado;
nomeArquivoSelecionado = event.getFile().getFileName();
conteudo = event.getFile().getContents();
System.out.println(“PASSO AQUI”);
}[/quote]
meu metodo de inserir usuario (quando eu clico em salvar no formulario:
public String inserirUsuario() {
try {
usuario.setFoto(conteudo); //ak coloca a foto
System.out.println("tamanho da foto na hora de salvar"+usuario.getFoto().length); //aki é só uma "prova real" pra ver se funfo mesmo
UsuarioDAO dao = new UsuarioDAOImp();
usuario.setAuthority("ROLE_USER");
dao.save(usuario); //e aki salva o usuário - obs.: caso eu não coloque foto, o cadastro é efetuado certinho
msg.enviar(msg.CADASTRO_EFETUADO);
usuario = new Usuario();
} catch (Exception e) {
msg.enviar(msg.ERRO_SISTEMA);
}
return "/login.xhtml";
}
na minha classe da persistencia, modelo, Usuario.class - ta assim:
@Column(nullable=true)
@Lob
private byte[] foto;