JPA eclipselink OID Large Object PostgreSQL



我是JPA的新手,我有一个字段PostgreSQL oid类型(字段foto)的问题,我试图通过Primefaces的p:fileupload存储从接口捕获的图像,并且没有成功。IDE我已经映射了图片字段数据类型BigInteger。他们尝试了以下方法:

  • 我想转换一个BigInteger FileUploadEvent字节和一个Bug我难住了。

  • 认为IDE被错误的映射OID改变数据类型到byte[]并成为返回FileUploadEvent me和I的字节给出错误。

    [EL Warning]: 01/12/2013 16:54:51.2 - ServerSession (1488263888) - Exception [EclipseLink-3002] (Eclipse Persistence Services)2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions。ConversionException异常描述:类[class java.lang.]的对象[94,750]。长],源自mapping [org.eclipse.persistence.mappings.]DirectToFieldMapping [photo -> candidate。[图]]与描述符[关系描述符(实体。

为前两种情况添加注释@ Lob,也不起作用,我不知道我是否应用了任何先前的转换或其他东西。

IDE: Netbeans 7.2

DBMS: 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的实体候选数据(Netbeans生成器)

@Column(name = "foto")
private BigInteger foto;
public BigInteger getFoto() {
    return foto;
}
public void setFoto(BigInteger foto) {
    this.foto = foto;
}

Entity candidate with Change of Type (byte[])

@Column(name = "foto")
private byte[] foto;
public byte[] getFoto() {
    return foto;
}
public void setFoto(byte[] foto) {
    this.foto = foto;
}

这似乎会给hibernate用户带来很多困惑。对于大多数情况,您希望byte[]在混血儿端,bytea在PostgreSQL端。bytea代表"字节数组",因此两者或多或少相同。Byteas的开销比lobs小得多,但是如果您需要一个流接口,包括在lob中查找的能力,您可能希望使用lob(混合blob和PostgreSQL中的oid)。例如,如果您正在存储流视频,并且可能想要在25MB内启动一个新的块请求,lob将派上用场。

Postgres如何返回OID类型?您很可能需要使用Converter在Java类型和OID类型之间进行转换。

看,http://www.eclipse.org/eclipselink/documentation/2.4/jpa/extensions/a_converter.htm CHDEHJEB

相关内容

  • 没有找到相关文章

最新更新