Spring Boot подводит итог не связанных между собой лиц - PullRequest
0 голосов
/ 27 сентября 2019

Я новичок в Spring и хочу создать приложение для групповой учетной записи в Spring / Angular.В настоящее время я создаю REST API.

У меня с одной стороны события .События - это дни, за которые вкладчик должен заплатить.

import lombok.*;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

@AllArgsConstructor(access = AccessLevel.PUBLIC)
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@Setter
@Getter
@Entity
@Table(name = "events")
public class Event extends AuditModel
{

    @Id
    @GeneratedValue(generator = "event_generator")
    @SequenceGenerator(
            name = "event_generator",
            sequenceName = "event_sequence",
            initialValue = 1000
    )
    private Long id;

    @NotNull(message = "Name may not be null")
    private String name;
    private LocalDate dueDate;
    @NotNull(message = "Sum may not be null")
    private int sum;

    @OneToMany(mappedBy = "eventId")
    private List<Transaction> transactions = new ArrayList<>();
}

С другой стороны, есть транзакции .Транзакции выполняются в этом случае, когда вкладчик заплатил немного денег.


import lombok.*;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

@AllArgsConstructor(access = AccessLevel.PUBLIC)
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@Setter
@Getter
@Entity
public class Transaction extends AuditModel
{
    @Id
    @GeneratedValue(generator = "transaction_generator")
    @SequenceGenerator(
            name = "transaction_generator",
            sequenceName = "transaction_sequence",
            initialValue = 1000
    )
    private Long id;

    private Long eventId;

    private Long depositorId;
    @NotNull(message = "Name may not be null")
    private Integer sum;

    private LocalDateTime dateTime;


}

В вкладчике я так или иначе хочу связать транзакции и события в зависимости от даты / даты.

import lombok.*;
import lombok.extern.log4j.Log4j2;
import org.hibernate.annotations.Formula;

import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

@AllArgsConstructor(access = AccessLevel.PUBLIC)
@NoArgsConstructor(access = AccessLevel.PUBLIC)
@Setter
@Getter
@Entity
@Table(name = "depositors")
@Log4j2
public class Depositor extends AuditModel
{

    @Id
    @GeneratedValue(generator = "depositor_generator")
    @SequenceGenerator(
            name = "depositor_generator",
            sequenceName = "depositor_sequence",
            initialValue = 1000
    )
    private Long id;

    @NotNull(message = "Name may not be null")
    private String name;
    private String phoneNumber;
    @NotNull(message = "DueDay may not be null")
    private LocalDate dueDay;

    @Formula("(select sum(t.sum) from Transaction t where t.depositor_id = id)")
    private Integer payedSum;

    @OneToMany(mappedBy = "depositorId")
    private List<Transaction> transactions = new ArrayList<>();

}

У меня есть основные пустые репозитории за этим.Данные хранятся в базе данных PostgreSQL.Там этот SQL-запрос дает мне правильный результат:

SELECT d.name, d.phone_number, d.due_day, d.created_at, d.updated_at, (SELECT SUM(e.sum) FROM events AS e WHERE e.due_date >= d.due_day) AS sumToPayTotal FROM depositors AS d;

Как использовать несвязанные данные в сущности или хранилище для отображения вычисленного значения?

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