gpt4 book ai didi

java - 如何使用 JPA 将 BigInteger 存储在 H2/PSQL 数据库中?

转载 作者:行者123 更新时间:2023-12-01 16:15:16 25 4
gpt4 key购买 nike

我正在尝试将 SHA256 哈希存储为数值,这似乎是从空间和索引 POV 执行此操作的最佳方法。我使用 JPA 进行简单的字段定义:

@NonNull
private BigInteger mybiginteger;

但是,它拒绝插入该值。

我在单元测试期间使用 H2 数据库,现在我在 JPA 中添加了 BigInteger 值,但它失败了

Caused by: org.h2.jdbc.JdbcSQLDataException: Value too long for column "MYBIGINTEGER DECIMAL(19, 2)": "-12804752987762098394035772686106585063470084017442529046078187006797464553387.00 (79)"; SQL statement:

跳过测试用例并使用 Postgres 进行尝试,它也失败了

Caused by: org.postgresql.util.PSQLException: ERROR: numeric field overflow
Detail: A field with precision 19, scale 2 must round to an absolute value less than 10^17.

JPA 根据 DB 工具将其创建为 numeric(19,2) 字段。我可以手动更改列定义并且它可以工作,但不能将其设置为在 H2 和 PSQL 之间可移植。

如何使用 JPA 在 H2/PSQL 数据库中正确存储 BigInteger?另外,为什么 BigInteger 类型允许两位小数?

最佳答案

我通过在属性上添加以下注释解决了这个问题。

@Column(columnDefinition = "BIGINT")

关于java - 如何使用 JPA 将 BigInteger 存储在 H2/PSQL 数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62413317/

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