如评论中所述,使用
.userAddress(mapper.readValue(rs.getString(SqlConstants.TableUser.USER_ADDRESS),
User.UserAddress.class))
应该工作得很好,至少对我来说是这样。然而,在这一变化之后,您可能会遇到:
com.fasterxml.jackson.databind.exc.unrecognizedpropertyException:无法识别字段“房屋编号”…
(而不是原来的错误),将通过对您的
UserAddressBuilder
:
@JsonProperty("house_number") // this is also needed to map correctly
public UserAddressBuilder houseNumber(String houseNumber) { ...
从
Javadoc
:
public t convertValue(对象FromValue,类ToValueType)
引发IllegalArgumentException
从给定值到给定值类型实例进行两步转换的方便方法。
这相当于首先将给定值序列化为JSON,然后将JSON数据绑定为给定类型的值。
但可以在不完全序列化为JSON的情况下执行。相同的转换器(序列化程序、反序列化程序)将用于数据绑定,这意味着相同的对象映射器配置可以工作。
虽然
readValue
用于从字符串、流、读卡器读取到对象值。用
convertValue(..)
您可能需要定义转换器,但在您的情况下不需要它。