【发布时间】:2013-03-05 00:33:32
【问题描述】:
当接收到作为@ResponseBody 参数的详细信息时,Spring 会创建一个正确类型的新对象(例如public void createUser(@RequestBody User user)。我将数据作为 JSON 发送到服务器,Spring 会按照指定创建新的用户对象。
我的问题是,无论如何让 Spring 忽略我拥有的自动生成的字段(如 createDate 等)。因此,例如,如果我只传入{"username":"sam"} 而没有其他任何内容,我想要一个只填充用户名字段的用户对象,而没有其他字段(即使这是无效的)。
我问这个的原因是因为我的用户从另一个我无法触及的对象继承了一些默认的自动生成属性,并且我需要一个对象,除了来自请求的字段之外,所有字段都为空。 更新:然后我可以将新创建的对象与 JpaRepository 中的对象合并(忽略空值)。
谢谢你:-)
【问题讨论】:
-
您可能需要覆盖这些字段的 getter 并添加注解
@JsonIgnore -
听起来像 createDate 等其他字段是在实例化时设置的?没有办法解决这个问题。我能想到的唯一方法是在 User 对象的默认构造函数中将所有值设置为 Null。
-
谢谢ninn:我认为你是对的。我将不得不解决删除所有默认值的问题,并在新对象最初持久保存到数据库之前调用某种伪构造函数。请列出您的答案,以便我接受 :) .. 谢谢 Arun:如果我 JsonIgnore 这些字段,它们将根本无法更新。我希望他们仅在该特定字段的 JSON 数据进入时更新。
标签: java spring spring-mvc