Изображение не сохраняется в postgres - PullRequest
2 голосов
/ 29 марта 2011

Я сохранил изображения в виде данных изображения в двоичном формате в MSSQL. Теперь я перенес свою базу данных из MSSQL в Postgres 9.0 и пытаюсь сохранить файлы изображений в поле bytea. Хотя я пытаюсь преобразовать эти байты в файл изображения, хотя Я не получаю никакой ошибки, но изображение не отображается, когда тот же Java-код работает нормально с MSSQL. Мое приложение - это приложение, основанное на Hibernate. Мой Hibernate-Dto выглядит следующим образом -

@Entity
@Table(name="Image_Type")
public class ImageType extends AbstractPO
 {


    private static final long serialVersionUID = 1L;

    private Long id;
    private Long ownerId;
    private Short ownerType;
    private String name;
    private String description;
    private Long typeId;
    private byte[] originalImage;
    private byte[] thumbNailImage;
    private byte[] terminalImage;
    private String createdBy;
    private Date createdOn;
    private String modifiedBy;
    private Date modifiedOn;
    private String rfu1;
    private String rfu2;
    private String rfu3;

    @Id @GeneratedValue(strategy=AUTO, generator="Image_Type_seq")
     @SequenceGenerator(name="Image_Type_seq", sequenceName="IMAGE_TYPE_IMAGE_TYPEID_SEQ")

    @Column(name="Image_TypeID", unique=true, nullable=false, precision=10, scale=0)
    public Long getId() {
        return this.id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @Column(name="OwnerID", precision=10, scale=0)
    public Long getOwnerId() {
        return this.ownerId;
    }

    public void setOwnerId(Long ownerId) {
        this.ownerId = ownerId;
    }

    @Column(name="OwnerType", precision=4, scale=0)
    public Short getOwnerType() {
        return this.ownerType;
    }

    public void setOwnerType(Short ownerType) {
        this.ownerType = ownerType;
    }

    @Column(name="Name", length=100)
    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Column(name="Description", length=100)
    public String getDescription() {
        return this.description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    @Column(name="TypeID", precision=10, scale=0)
    public Long getTypeId() {
        return this.typeId;
    }

    public void setTypeId(Long typeId) {
        this.typeId = typeId;
    }

    @Column(name="Original_Image")
    public byte[] getOriginalImage() {
        return this.originalImage;
    }

    public void setOriginalImage(byte[] originalImage) {
        this.originalImage = originalImage;
    }

    @Column(name="ThumbNail_Image")
    public byte[] getThumbNailImage() {
        return this.thumbNailImage;
    }

    public void setThumbNailImage(byte[] thumbNailImage) {
        this.thumbNailImage = thumbNailImage;
    }

    @Column(name="Terminal_Image")
    public byte[] getTerminalImage() {
        return this.terminalImage;
    }

    public void setTerminalImage(byte[] terminalImage) {
        this.terminalImage = terminalImage;
    }

    @Column(name="CreatedBy", length=50)
    public String getCreatedBy() {
        return this.createdBy;
    }

    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    @Column(name="CreatedOn", nullable=false, length=23)
    public Date getCreatedOn() {
        return this.createdOn;
    }

    public void setCreatedOn(Date createdOn) {
        this.createdOn = createdOn;
    }

    @Column(name="ModifiedBy", length=50)
    public String getModifiedBy() {
        return this.modifiedBy;
    }

    public void setModifiedBy(String modifiedBy) {
        this.modifiedBy = modifiedBy;
    }

    @Column(name="ModifiedOn", length=23)
    public Date getModifiedOn() {
        return this.modifiedOn;
    }

    public void setModifiedOn(Date modifiedOn) {
        this.modifiedOn = modifiedOn;
    }

    @Column(name="RFU1", length=100)
    public String getRfu1() {
        return this.rfu1;
    }

    public void setRfu1(String rfu1) {
        this.rfu1 = rfu1;
    }

    @Column(name="RFU2", length=100)
    public String getRfu2() {
        return this.rfu2;
    }

    public void setRfu2(String rfu2) {
        this.rfu2 = rfu2;
    }

    @Column(name="RFU3", length=100)
    public String getRfu3() {
        return this.rfu3;
    }

    public void setRfu3(String rfu3) {
        this.rfu3 = rfu3;
    }




}  

Пожалуйста, помогите мне решить эту проблему

1 Ответ

2 голосов
/ 29 марта 2011

Какую версию Postgresql вы используете?Вы используете сервер версии 9 и драйвер JDBC 8.4?(потому что, если это так: Hibernate 3.3.2GA неправильно загружает байтовые данные из PostgreSQL 9.0, и все сопоставления типов правильны )

Какое фактическое значение хранится в базе данных?Используйте psql для проверки и сравните первые 16 байтов или около того с ожидаемыми значениями.Поскольку они являются изображениями, можно ожидать, что они начнутся с некоторой магии формата - «JFIF», «GIF», «PNG», «II» / «MM» и т. Д. Вы должны быть в состоянии определить, повреждены ли данные, когдасохраняются, повреждены при загрузке или по какой-либо другой проблеме.Дамп первых нескольких байтов массива изображения перед сохранением объекта и после загрузки для сравнения со значениями из psql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...