我正在尝试将 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/