gpt4 book ai didi

java - Hibernate 实体中的 Postgres 数组

转载 作者:行者123 更新时间:2023-11-29 12:26:45 27 4
gpt4 key购买 nike

我在我的项目中使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com