gpt4 book ai didi

java - Spring Data Rest中参数有 'projections'吗?

转载 作者:行者123 更新时间:2023-11-30 12:02:12 24 4
gpt4 key购买 nike

SDR 中的投影非常适合控制 json 输出。但是 REST 调用中的输入和参数呢?

当我实现自己的 Controller 时,我能够通过以下任一方式为输入(创建/更新)接近自定义“投影”

  1. 创建与完整实体不同的自定义 DTO
  2. 或者我可以只使用@JsonView 并在途中省略某些字段

这两种方法都不适用于 SDR,因为您不编写 Controller 。有什么方法可以做到这一点?

最佳答案

反射(reflection)评论区讨论的问题:

为实体添加一个@PoSTLoad方法:

@PostLoad
public void postLoad() {
... store the values of the un-updateable fields into transient fields with @JsonIgnore
}

@JsonIgnore
@Transient
private String originalValue1;

@JsonIgnore
@Transient
private String originalValue2;

创建一个 @HandleBeforeSave 事件处理程序。它在更新期间调用,但不在创建期间调用。

将存储的值复制到此处理程序中的原始字段。

  • 在创建过程中不会调用事件处理程序,所有字段都可以通过标准 SDR 端点进行设置。
  • 在更新期间,您在保存之前用它们的原始值覆盖更改的值,因此当实体被保存时,它将保留原始值。

关于java - Spring Data Rest中参数有 'projections'吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58776633/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com