小编yej*_*lue的帖子

在 Spring Data REST + 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 中。

1.Spring Data注解@ReadOnlyProperty和@Transient

保存到数据库时该字段不可插入。请参阅包readonlypropertytransient_项目中的内容。

2. Jackson注解@JsonProperty(access=READ_ONLY)

通过 POST 请求创建时,该字段不可插入,因为初始化对象时会忽略 JSON 属性。jsonpropertyreadonly请参阅项目中的包。

3.构造函数上的@JsonCreator和setter上的@JsonIgnore

username如果PUT 或 PATCH 请求的 json 正文中包含不可更新的字段,并且username值发生更改,username则会更新,这是意外的。jsoncreator请参阅项目中的包。

4.不要写setter

同3。参见nosetter项目中的package。

5. 开启/关闭功能

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)

没有帮助

Spring Data REST PUT 和 PATCH 内部实现

  • PUT:它使用 JacksonObjectMapper.readerFor(Class)来启动一个新对象
  • PATCH:它使用 Jackson ObjectMapper.readerForUpdating(objectToUpdate).readValue(json) …

jackson spring-data-rest spring-data-mongodb

10
推荐指数
0
解决办法
2020
查看次数

对于字符串,fmt.Printf() 标志“0”不会被忽略

根据文档,字符串的标志“0”被忽略

'0' 用前导零而不是空格填充;对于数字,这会移动符号后面的填充;忽略字符串、字节切片和字节数组

但在下面的代码中不会忽略标志“0”。医生有错吗?还是我误解了它?

package main

import "fmt"

func main() {
    fmt.Printf("%05s", "abc")
    // print 00abc
}
Run Code Online (Sandbox Code Playgroud)

go

6
推荐指数
1
解决办法
86
查看次数