У меня есть класс Image, в котором есть байт [] для хранения фактических данных изображения.Я могу загрузить и вставить изображение просто отлично в моем веб-приложении.Когда я пытаюсь отобразить изображение после чтения его из JPA, длина моего байта [] всегда равна 2x-1 или 2x-2, где x - длина поля bytea в postgres 9. Очевидно, что браузер не будет отображатьсяизображение говорит, что оно повреждено.Я мог бы использовать некоторую помощь, чтобы выяснить, почему я получаю (примерно) вдвое больше, чем я ожидаю.Вот карта моего класса изображений.Используя eclipselink с JPA 2, ударил Postgres 9 на Mac.
Когда я выбираю из базы данных с
select *, length(bytes) from image;
, я получаю длину 9765. В точке останова в моем контроллере байт [] длина равна 19529, что на один байт вдвое больше, чем в базе данных.
@Entity
@Table( name = "image" )
@SequenceGenerator( name = "IMAGE_SEQ_GEN", sequenceName = "IMAGE_SEQUENCE" )
public class Image
extends DataObjectAbstract<Long>
{
@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
);