我有一个数字数据库字段(SQL Server 2000中的数字(3)),它允许空值,而null是我首选的“无值”值。如何在使用BeanUtils.copyProperties时为数值保留空值?
该字段映射到非原始Java Long
类休眠:
<property column="my_column" name="my_column" type="java.lang.Long" not-null="false" />
该字段设置为我的两个支柱形式和豆java.lang.Long
。当Struts窗体首次创建时,我已验证该属性返回null。在创建bean(从数据库中提取)时,我已验证该属性返回null。但是,在使用BeanUtils.copyProperties()
预填充了Bean值的Struts表单后,该属性将返回0,如果我继续并保存表单,则数据库将具有0值。
我是否使用错误的类型或类型组合(在数据库和/或Hibernate/Java中)为数字字段保留空值?我应该将数字sql类型映射到不同的Java类,如BigDecimal
?在研究中,我发现提到了一个Converter
类。我是否需要创建这样的类以帮助BeanUtils
正确地维护空值?
谢谢。我添加了`ConvertUtils.register(new LongConverter(null),Long.class);`就在复制属性调用之前修复它。但是,这是注册Long转换器的最佳位置吗?根据我所读到的,转换器注册是全球性的,所以应该在其他地方注册,如果是,在哪里注册? – Nicole 2009-06-17 20:50:13