我有一个Image类,它有一个byte []来包含实际的图像数据.我能够在我的webapp上上传和插入图像.当我从JPA读取图像后尝试显示图像时,我的byte []的长度总是2x-1或2x-2,其中x是postgres 9中bytea字段的长度.显然浏览器不会显示图像说它已损坏.我可以用一些帮助来弄清楚为什么我得到(约)两倍的预期.这是我的图像类的映射.使用eclipselink和JPA 2在Mac上击中postgres 9.
当我从数据库中选择时
select *, length(bytes) from image;
我得到9765的长度.在我的控制器的断点中,byte []长度是19529,这是数据库中两倍的一个字节.
@Entity
@Table( name = "image" )
@SequenceGenerator( name = "IMAGE_SEQ_GEN", sequenceName = "IMAGE_SEQUENCE" )
public class Image
extends DataObjectAbstract
{
@Id
@GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "IMAGE_SEQ_GEN" )
private Long key;
@Column( name="content_type" )
private String contentType;
@Lob
@Basic( optional=false )
@Column( name="bytes" )
private byte[] bytes;
// constructor and getters and setters
}
pgadmin向我展示了图像表的以下内容
CREATE TABLE image
(
"key" bigint NOT NULL,
bytes bytea,
content_type character varying(255),
"version" integer,
CONSTRAINT image_pkey PRIMARY KEY (key)
)
WITH (
OIDS=FALSE
);