我是 JPA 的新手,我的字段 PostgreSQL oid 类型(字段 foto)有问题,我试图通过 Primefaces 的 ap:fileupload 存储从接口捕获的图像并且没有成功。我已经映射了图片字段数据类型 BigInteger 的 IDE。他们尝试了以下方法:
我想转换一个 BigInteger FileUploadEvent 字节和一个让我难过的 Bug。
认为 IDE 被错误地映射 OID 将数据类型更改为 byte [] 并成为返回 FileUploadEvent 的字节,我给出了错误。
[EL 警告]:01/12/2013 16:54:51.2 - ServerSession (1488263888) - 异常 [EclipseLink-3002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions。ConversionException 异常描述:对象 [94,750],属于类 [class java.lang.Long],来自映射 [org.eclipse.persistence.mappings.DirectToFieldMapping [photo -> candidato.foto]] 与描述符 [RelationalDescriptor (Entity.Candidato) -> [DatabaseTable (candidate)])],无法转换为 [class [B]。
为前两种情况添加注释@Lob,也没有工作,我不知道我是否应用了任何先前的转换或什么。
IDE:Netbeans 7.2
数据库管理系统:PostgreSQL 9.0
持久化引擎:EclipseLink 2.3.2
我希望我能帮上忙。
表 BD
CREATE TABLE candidato
(
idcandidato serial NOT NULL,
idtipoidentificacion integer,
numeroidentificacion character varying(100),
nombres character varying(100),
foto oid,
n_foto character varying(50),
CONSTRAINT candidato_pkey PRIMARY KEY (idcandidato),
)
WITH (
OIDS=FALSE
);
具有 BigInteger 的实体 Candidato(Netbeans 生成器)
@Column(name = "foto")
private BigInteger foto;
public BigInteger getFoto() {
return foto;
}
public void setFoto(BigInteger foto) {
this.foto = foto;
}
具有类型更改的实体候选者 (byte[])
@Column(name = "foto")
private byte[] foto;
public byte[] getFoto() {
return foto;
}
public void setFoto(byte[] foto) {
this.foto = foto;
}