我无法确保以@CreatedBy
,@CreatedAt
,@ ChangedBy ,
@ ChangedAt and
@ Version while using
注释的字段中的数据-休息`。它的行为方式出乎意料。
PUT
和@CreatedAt
的字段时调用@ChangedAt
端点会将这些字段设置为null
。我通过用updatable = false
注释这些字段来解决此问题。POST
,@CreatedBy
,@CreatedAt
,@ChangedBy
呼叫@ChangedAt
端点会忽略这些值并正确设置以下值:这些值。POST
的某个随机值调用@Version
端点会将该错误值设置为该字段。我尝试设置insertable = false
,但是由于不是null约束而无法正常工作。在这一点上,我很困惑如何确保这些字段不会被其余端点的错误请求主体破坏。任何帮助表示赞赏。
答案 0 :(得分:2)
由于客户端不应修改这些属性,因此应将其标记为只读。
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
private String someField;
您可以直接在Entity上执行此操作,或者为了防止不得不向实体引入Jackson批注,可以通过Jackson Jackson类来处理。
请参阅:https://dzone.com/articles/jackson-mixin-to-the-rescue
您可以使用以下配置注册Mixin:
@Configuration
public class RepositoryConfiguration {
@Autowired
private Jackson2ObjectMapperBuilder objectMapperBuilder;
@Bean
public ObjectMapper objectMapper() {
objectMapperBuilder.mixIn(SomeClass.class, SomeClassMixin.class);
return objectMapperBuilder.build();
}
}