Postgres массив в спящем объекте

2

Я использую базу данных postgres и весну с hibernate в моем проекте.

Я просто хочу получить некоторые данные из БД, где таблица имеет столбец типа данных массива сама по себе.

Пока я получаю с этой таблицы, я получаю следующую ошибку.

    ERROR org.hibernate.util.JDBCExceptionReporter  - ERROR: relation "reconcileprocess_bankstmtid" does not exist

Структура таблицы следующая

    CREATE TABLE reconcile_process
    (
      id bigserial NOT NULL,
      comments character varying,
      fk_last_modified_by bigint NOT NULL,
      last_modified_date timestamp with time zone NOT NULL,
      fk_remittance_transaction_fkey character varying,
      fk_transaction_ref character varying,
      process_type character varying,
      reconcilled_date date,
      fk_bank_stmt_id bigint[]
    )

Класс сущности для этой таблицы

    @Entity
    @Table(name = "reconcile_process")
    public class ReconcileProcess implements Serializable {

        private static final long serialVersionUID = 1L;

        @Id
        @Column(name = "id")
        Long id;

        @Column(name = "comments")
        String comments;

        @Column(name = "fk_last_modified_by")
        Long lastModifiedBy;

        @Column(name = "last_modified_date")
        Date lastModifiedDate;

        @Column(name = "fk_transaction_ref")
        String transactionRef;

        @Column(name = "fk_remittance_transaction_fkey")
        String remitTransactionRef;

        @Column(name = "process_type")
        String processType;

        @Column(name = "reconcilled_date")
        Date reconcilledDate;

        @ElementCollection
        @Column(name = "fk_bank_stmt_id")
        List<Long> bankStmtId;
Теги:
arrays
hibernate

1 ответ

0
Лучший ответ

Hibernate не поддерживает массивы базы данных (java.sql.Array).

Вы получаете ошибку, потому что Hibernate ожидает отдельную таблицу для List<Long> bankStmtId (поскольку вы явно не указали имя таблицы, Hibernate принимает значение по умолчанию <entity name>_<property name>, таким образом, reconcileprocess_bankstmtid).

Вы можете либо переключиться на поддерживаемый подход с отдельной таблицей, либо, как описано здесь, вы можете попытаться написать пользовательский тип пользователя для массивов баз данных.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню