我们有一个表,其中包含一组用于应用程序ver 1的列。对于ver 2,我们添加了另一列CHAR(1)
类型,仅接受'Y'或'N'(java中的布尔值),且非空约束。因此,当数据迁移ver 1到ver 2时,我们将此列填充为空值,因为此列不存在于ver 1中。由于这不是null列,并且java中的boolean类型不接受null值,因此它将抛出异常java的。请告诉我什么是避免这种情况的最佳解决方案。
将布尔值更改为布尔对象。 Boolean接受空值。这解决了问题,但似乎不是一个好的解决方案。由于我们没有空约束,我们应该避免在表中添加空值,否则它是损坏的记录。
将默认值放在表的alter scripts中,因此添加了没有值的记录,它会分配默认值而不是null
迁移数据。之后执行column的修改脚本,将所有空值更改为默认值。
使用JAVA 8,Oracle DB
答案 0 :(得分:1)
数据迁移是一次性活动。如果您在表级提供默认值,那将是您的第二个解决方案;所以一定要顺其自然。这将照顾您的一次性迁移内容,并使其面向未来。
答案 1 :(得分:0)
你在列上提供的不是空约束,所以第三种方法是错误的。在第一种情况下,您需要在Java代码中处理空值,否则可能会出现空指针异常。所以我建议首选基本类型布尔值并提供默认值,以便在代码中处理变得容易