Отображение Hibernate для столбца PostgreSQL bytea - PullRequest
0 голосов
/ 22 октября 2018

Я перехожу с DB2 на PostgreSQL.В результате я получил следующий DDL в PostgreSQL:

CREATE TABLE binResTable (
        idField       DECIMAL(15) NOT NULL,
        checksumField DECIMAL(15) DEFAULT 0 NOT NULL,
        blobField     bytea NOT NULL DEFAULT E'\\000'
    );

Мое отображение Hiberante (файл XML) выглядит следующим образом:

BinaryResource.hbm.xml

<hibernate-mapping>
<class name="BinaryResource" table="binResTable" lazy="true">
    <id name="id" type="long" column="idField" />
    <property name="checksum" type="long" column="checksumField" lazy="true" />
    <property name="bytes" type="BinaryBlobType" column="blobField" lazy="true" /> 
</class>
</hibernate-mapping>

Вот класс Java для сопоставления:

public class BinaryResource implements Serializable {

    private long id;

    private BinaryDocument document;

    private byte[] bytes;

    private long checksum;

    ...

Для поля BLOB-объектов я использую следующий тип пользователя:

import java.io.Serializable;
import java.sql.Blob;
import java.sql.Types;

import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.usertype.UserType;

public class BinaryBlobType implements UserType {

    public int[] sqlTypes() {
        return new int[] { Types.BLOB };
    }

    public Class<byte[]> returnedClass() {
        return byte[].class;
    }

    ...

Чтение данных работало нормально, но когда я хочу вставить запись в таблицу "binResTable", я получаю следующую ошибку:

ERROR: column "blobField" is of type bytea but expression is of type bigint

Как мне нужно отобразить поле байта в Hibernate?

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