我有一些列与NaN值在我的Postgres数据库。我们处理金钱,所以我所有的实体都是BigDecimals,它不能容纳NaN。
是否有一个设置或JPA或Hibernate上的东西,我可以告诉它"对待任何nan,如果他们是null ">
您可以使用@ColumnTransformer
对单个列执行此操作,并且可以通过MetadataContributor
以编程方式执行此操作(参见如何在Hibernate中以编程方式提供对ColumnTransofrmer的读写?),但不可能在全局中执行此操作。
然而,如果你有NaN在你的数据库中,有些东西是错误的,因为你正在保存一些float/double类型的值。所以在我看来,你应该先迁移数据update tbl set col = null where is_nan(col)
,然后切换到alter table tbl alter column col set datatype numeric(19,3)
或类似的东西。