2012-09-15 55 views
2

我有一個Grails應用程序,它依賴於定期吸入的外部數據集。當數據進入數據庫時​​無法驗證數據,因爲吸入它的程序不是由我們編寫的。使用ORM進行數據驗證

有一段時間,我們在數據庫中收到了一段糟糕的數據。例如,一個數字是「5,5」而不是「5.5」。該列上的數據類型(因爲它們定義了該表)是VARCHAR,即使該字段應始終包含一個數字。我們的應用程序將此列映射到ORM層中的FLOAT,因爲這是我們所期望的。

我想確保應用程序在我們獲取新數據時不會崩潰,但我不知道如何。我應該將該列映射到VARCHAR,然後轉換到FLOAT瞬態列或類似的東西?

回答

2

短期來說,是的,將VARCHAR映射到域對象中的字符串而不是數字類型可以解決問題。

在我看來,更好的解決方案是將定期導入到不同的表中,並有一個只將有效行移動到域表的過程。您可能還想在某處放置「壞」行,並通知某人手動修復它們。