У меня есть приложение Spring Boot, в котором я использую JpaRepository
для доступа к моим данным.
У меня возникают проблемы с предложением наиболее элегантного и эффективного решения для агрегирования свойств всценарий OneToMany.
У меня есть следующий сценарий:
public class Item {
@Id
private int Id;
/*
@OneToMany(mappedBy = "item")
@JsonIgnore
private List<LoggedItem> loggedItems
@JsonProperty("instances")
public int instances() {
return loggedItems.size();
}
@JsonProperty("lastRun")
public LocalDateTime lastRun() {
return loggedItems.stream().
.map(LoggedItem::getExecutedAt)
.max(LocalDateTime::compareTo)).orElse(null);
}
*/
}
public class LoggedItem {
@Id
private int Id;
LocalDateTime executedAt;
@ManyToOne
@JoinColumn(name = ""item_id", referencedColumnName = "id")
private Item item;
}
Я пробовал без производных столбцов и вместо этого опирался на список, но затем я получаю дубликатстрок. Да, добавление отдельного ключевого слова избавляет от них, но все равно кажется довольно неэффективным.
Я также исследовал использование различных режимов @Fetch
и @ JsonManagedReference / @ JsonBackReference (хотя это только для предотвращениябесконечная рекурсия, которую я получаю при сериализации)
Может ли кто-нибудь предложить наиболее подходящий подход?