【问题标题】:Can I handle NaN as NULL in Spring Data JPA?我可以在 Spring Data JPA 中将 NaN 处理为 NULL 吗?
【发布时间】:2021-10-19 18:45:35
【问题描述】:

我的 Postgres 数据库中有一些包含 NaN 值的列。我们正在处理金钱,所以我的所有实体都是 BigDecimal,不能容纳 NaN。

在 JPA 或 Hibernate 上是否有设置或其他内容,我可以告诉它“将任何 NaN 视为 NULLS”

【问题讨论】:

    标签: hibernate jpa bigdecimal


    【解决方案1】:

    您可以使用@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) 或类似的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-23
      • 2020-07-07
      • 2018-09-04
      • 1970-01-01
      • 2016-04-14
      • 2021-01-08
      • 1970-01-01
      相关资源
      最近更新 更多