yej*_*lue 10 jackson spring-data-rest spring-data-mongodb
使用 Spring Data REST 和 Spring Data Mongo,我希望使域字段(在我的示例中username为域字段)在创建时可插入,但在更新时不可更新。换句话说,相当于 JPA @Column(insertable = true, updatable = false)。User
我尝试了几种方法但不起作用。在我的github项目中,域类和存储库放在/src/main/java/*/*/User.java和UserRepository.java中。测试放在/src/test/java/*/*UserTest.java 中。
保存到数据库时该字段不可插入。请参阅包readonlyproperty和transient_项目中的内容。
通过 POST 请求创建时,该字段不可插入,因为初始化对象时会忽略 JSON 属性。jsonpropertyreadonly请参阅项目中的包。
username如果PUT 或 PATCH 请求的 json 正文中包含不可更新的字段,并且username值发生更改,username则会更新,这是意外的。jsoncreator请参阅项目中的包。
同3。参见nosetter项目中的package。
spring.jackson.deserialization.fail-on-ignored-properties=false
spring.jackson.deserialization.fail-on-unknown-properties=false
spring.jackson.mapper.infer-property-mutators=false
Run Code Online (Sandbox Code Playgroud)
没有帮助
ObjectMapper.readerFor(Class)来启动一个新对象ObjectMapper.readerForUpdating(objectToUpdate).readValue(json),它使用 setter 来更新objectToUpdate. 似乎readerForUpdating在设置器上没有看到@JsonIgnore。我知道的唯一解决方案是通过以下方式实现设置器
spring.jackson.deserialization.fail-on-ignored-properties=false
spring.jackson.deserialization.fail-on-unknown-properties=false
spring.jackson.mapper.infer-property-mutators=false
Run Code Online (Sandbox Code Playgroud)
并且禁用PUT方法,只使用PATCH来更新。参见包setterchecknull。
有没有更好的办法?非常感谢!!
| 归档时间: |
|
| 查看次数: |
2020 次 |
| 最近记录: |