Olá pessoal,
estou com um sério problema há mais de uma semana. Estou usando JPA e usando o PostgreSQL em uma aplicação desktop.
Então, tô tentando upar um arquivo de imagem (jpg), até a hora de anexar blz… mas quando vou clicar em salvar dá pau.
Estou utilizando 2 classes relacionadas a Imagem: Documentocom alguns atributos, e tal classe se relaciona com outras entidades, e outra classe que é DocumentoImagem, que é aonde vai ficar a Imagem e lá tem o campo Lob
E esses são os erros exibidos pela console, estou usando o NetBeans
SEVERE: null
javax.imageio.IIOException: Can’t read input file! (não sei o porque do arquivo não poder ser lido)
Exception occurred during event dispatching:
javax.persistence.RollbackException: Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: org.postgresql.util.PSQLException: ERRO: coluna "conteudo" é do tipo bytea mas expressão é do tipo oid
Error Code: 0
Call: INSERT INTO DOCUMENTOIMAGEM (CONTEUDO, imagem) VALUES (?, ?)
bind => [null, 4]
Abaixo vou deixar o mapeamento dessas 2 classes
class Documento
@Entity
public class Documento {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int codigo;
@Temporal(TemporalType.DATE)
private GregorianCalendar dataCadastro;
@Temporal(TemporalType.DATE)
private GregorianCalendar dataValidade;
@ManyToOne
@JoinColumn(name = "empresa")
private Empresa empresa;
@ManyToOne
@JoinColumn(name = "usuario")
private Usuario usuario;
@ManyToMany(mappedBy = "documentos", cascade = CascadeType.ALL)
@JoinColumn(name = "representante")
private List<Representante> representantes = new ArrayList<Representante>();
@OneToOne(mappedBy = "documento", cascade = CascadeType.ALL)
@JoinColumn(name = "imagem")
private DocumentoImagem documentoImagem;
public Documento() {
}
public Documento(GregorianCalendar dataCadastro, GregorianCalendar dataValidade) {
this.dataCadastro = dataCadastro;
this.dataValidade = dataValidade;
}
public Documento(Empresa empresa, List<Representante> representantes, GregorianCalendar dataCadastro) {
this.empresa = empresa;
this.representantes = representantes;
this.dataCadastro = dataCadastro;
}
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public GregorianCalendar getDataCadastro() {
return dataCadastro;
}
public void setDataCadastro(GregorianCalendar dataCadastro) {
this.dataCadastro = dataCadastro;
}
public GregorianCalendar getDataValidade() {
return dataValidade;
}
public void setDataValidade(GregorianCalendar dataValidade) {
this.dataValidade = dataValidade;
}
public Empresa getEmpresa() {
return empresa;
}
public void setEmpresa(Empresa empresa) {
this.empresa = empresa;
}
public List<Representante> getRepresentantes() {
return representantes;
}
public void setRepresentantes(List<Representante> representantes) {
this.representantes = representantes;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public DocumentoImagem getDocumentoImagem() {
return documentoImagem;
}
public void setDocumentoImagem(DocumentoImagem documentoImagem) {
this.documentoImagem = documentoImagem;
}
public void addRepresente(Representante r) {
representantes.add(r);
}
@Override
public String toString() {
return "Código: " + this.codigo + " - Data de cadastro: " + this.dataCadastro + " - Válido até: " + this.dataValidade;
}
}
class DocumentoImagem
@Entity
public class DocumentoImagem {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int codigo;
@Lob
private byte[] conteudo;
@OneToOne
@JoinColumn(name = "imagem")
private Documento documento;
public DocumentoImagem() {
}
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public byte[] getConteudo() {
return conteudo;
}
public void setConteudo(byte[] conteudo) {
this.conteudo = conteudo;
}
public Documento getDocumento() {
return documento;
}
public void setDocumento(Documento documento) {
this.documento = documento;
}
}