我有一个 Grails 应用程序,它依赖于定期吸收的外部数据集。当数据进入数据库时,我们无法对其进行验证,因为接收数据的程序不是我们编写的。
偶尔,我们会在数据库中收到错误的数据。例如,数字是“5,5”而不是“5.5”。列上的数据类型(因为它们定义了表)是 VARCHAR,即使该字段应始终包含数字。我们的应用程序将此列映射到 ORM 层中的 FLOAT,因为这正是我们所期望的。
我想确保应用程序在获取新数据时不会崩溃,但我不确定如何做到。我是否应该将该列映射到 VARCHAR,然后转换为 transient FLOAT 列或类似的列?
最佳答案
短期内,是的,将 VARCHAR 映射到域对象中的 String 而不是数字类型可以解决问题。
在我看来,更好的解决方案是定期导入到不同的表中,并有一个仅将有效行移动到域表的过程。您可能还想将“坏”行放在某处,并通知某人手动修复它们。
关于database - 使用 ORM 进行数据验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12438637/