Postgres数组在Hibernate实体中

时间:2015-07-20 11:38:16

标签: java arrays hibernate postgresql

我在我的项目中使用postgres数据库和spring with hibernate。

我只想从DB获取一些数据,其中表本身具有数组数据类型列。

当我从该表中获取时,我收到以下错误。

    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;

1 个答案:

答案 0 :(得分:0)

Hibernate不支持数据库阵列(java.sql.Array)。

你得到错误是因为Hibernate需要一个单独的List<Long> bankStmtId表(因为你没有明确指定表名,Hibernate假定默认为<entity name>_<property name>,因此reconcileprocess_bankstmtid )。

您可以使用单独的表切换到支持的方法,或者按照here的说明,您可以尝试为数据库阵列编写自定义用户类型。