java - Hibernate 实体中的 Postgres 数组

标签 java arrays hibernate postgresql

我在我的项目中使用 postgres 数据库和 spring with 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;

最佳答案

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

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

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

关于java - Hibernate 实体中的 Postgres 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31515522/

相关文章:

java - char[] 是否有最大大小?

java - Map.Entry 条目和 lambda 表达式无法解析

Java保证回调顺序执行

java - Spring @Transactional 注解问题

java - 使用多线程更新数据库时如何避免 "lock timeout"?

java - JAXB异常处理

Java - 循环多个数组(字符串与 "array type"不匹配)

C++ 从数字数组创建 png/位图

javascript - 如何将数组对象保存到 Chrome 本地存储中

java - Hibernate @Enumerated 映射