В настоящее время у меня есть простое приложение 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
}
Мне интересно, как лучше всего это сделать весной?