Как вернуть один объект в Spring Boot Rest при запросе списка - PullRequest
1 голос
/ 20 марта 2020

В настоящее время у меня есть простое приложение Spring Boot, настроенное с двумя объектами - AppUser и Settings. Один AppUser имеет множество настроек в списке, например:

1002 * AppUser -
@Entity
@Table(name = "app_user")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class AppUser implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
    @SequenceGenerator(name = "sequenceGenerator")
    private Long id;

    @NotNull
    @Column(name = "first_name", nullable = false)
    private String firstName;

    @NotNull
    @Column(name = "last_name", nullable = false)
    private String lastName;

    @OneToMany(fetch = FetchType.EAGER, mappedBy = "appUser")
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    private List<Setting> settings = new ArrayList<>();
    // getters and setters ...

Настройка -

@Entity
@Table(name = "setting")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Setting implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
    @SequenceGenerator(name = "sequenceGenerator")
    @JsonIgnore
    private Long id;

    @Column(name = "test_setting_1")
    private Boolean testSetting1;

    @Column(name = "test_setting_2")
    private Boolean testSetting2;

    @ManyToOne
    @JsonIgnore
    private AppUser appUser;
    // getters and setters ...

В настоящее время я использую репозиторий для возврата списка настроек с помощью

List<Setting> findByAppUserId(Long id);

, который вызывается контроллером -

@GetMapping("/settings")
public List<Setting> getAllSettings() {
    return settingRepository.findByAppUserId(1001L);
}

Когда я возвращаю это через контроллер, хотя Я получаю массив объектов вроде этого -

[
  {
    "testSetting1": true
  },
  {
    "testSetting2": true
  }
]

Я хотел бы вернуться к интерфейсу - это один объект со всеми настройками в нем, что-то вроде этого -

{
  "testSetting1": true,
  "testSetting2": true
}

Мне интересно, как лучше всего это сделать весной?

...