Эффективные производные подсчеты из JPA соединений - PullRequest
0 голосов
/ 14 октября 2019

У меня есть приложение 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 (хотя это только для предотвращениябесконечная рекурсия, которую я получаю при сериализации)

Может ли кто-нибудь предложить наиболее подходящий подход?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...