【发布时间】:2021-10-19 18:45:35
【问题描述】:
我的 Postgres 数据库中有一些包含 NaN 值的列。我们正在处理金钱,所以我的所有实体都是 BigDecimal,不能容纳 NaN。
在 JPA 或 Hibernate 上是否有设置或其他内容,我可以告诉它“将任何 NaN 视为 NULLS”
【问题讨论】:
标签: hibernate jpa bigdecimal
我的 Postgres 数据库中有一些包含 NaN 值的列。我们正在处理金钱,所以我的所有实体都是 BigDecimal,不能容纳 NaN。
在 JPA 或 Hibernate 上是否有设置或其他内容,我可以告诉它“将任何 NaN 视为 NULLS”
【问题讨论】:
标签: hibernate jpa bigdecimal
您可以使用@ColumnTransformer 对单个列执行此操作,也可以通过MetadataContributor 以编程方式执行此操作(请参阅How to provide read and write to ColumnTransofrmer programatically in Hibernate?),但无法全局执行此操作。
但是,如果您的数据库中有 NaN,则已经有问题了,因为您正在使用某些浮点/双精度类型保存值。所以 IMO 你应该先迁移数据update tbl set col = null where is_nan(col) 然后切换到alter table tbl alter column col set datatype numeric(19,3) 或类似的东西。
【讨论】: