Поиск по двум объектам не работает с JpaRepository - PullRequest
0 голосов
/ 26 января 2020

Я создаю приложение, содержащее UserProfile с Wallet, в котором много транзакций.

Вот класс транзакций:

@Entity
@Table(name = "transactions")
public class Transaction extends BaseEntity {

    @Column(name = "amount", nullable = false)
    private BigDecimal amount;

    @Column(name = "executed_on", nullable = false)
    private LocalDateTime executedOn;

    @Column(name = "is_top_up")
    private boolean isTopUp;

    @Column(name = "note")
    private String note;

    @ManyToOne(targetEntity = UserProfile.class)
    private UserProfile sender;

    @ManyToOne(targetEntity = UserProfile.class)
    private UserProfile receiver;

    public Transaction() {
    }

Вот класс кошельков

@Entity
@Table(name = "wallets")
public class Wallet extends BaseEntity {

    @ManyToMany(targetEntity = Transaction.class, cascade = {
            CascadeType.PERSIST,
            CascadeType.MERGE
    }, fetch = FetchType.EAGER)
    @JoinTable(name = "wallets_transactions",
            joinColumns = @JoinColumn(name = "wallet_id", referencedColumnName = "id"),
            inverseJoinColumns = @JoinColumn(name = "transaction_id", referencedColumnName = "id")
    )
    private Set<Transaction> transactions;

    public Wallet() {
        this.transactions = new HashSet<>();
    }

    public Set<Transaction> getTransactions() {
        return transactions;
    }

    public void setTransactions(Set<Transaction> transactions) {
        this.transactions = transactions;
    }

    public void addTransaction(Transaction transaction) {
        this.transactions.add(transaction);
    }
}

Я хочу получить все транзакции по критериям поиска отправителя и получателя. Например, пользователь «A» отправил деньги пользователю «B». Я использую JpaRepository. Конечный результат должен быть в классе Page<Transaction>.

До сих пор, когда используется только findAllBySender(UserProfile sender, Pageable pageable), он работает, и я получаю точно правильные транзакции. Но когда я пытаюсь Page<Transaction> findAllBySenderAndReceiver(UserProfile sender, UserProfile receiver, Pageable pageable);, я получаю Page<T> с 0 элементами, когда в моей БД есть тестовые данные хотя бы с 1 записью.

1 Ответ

0 голосов
/ 27 января 2020

решаемая. Оказывается, у меня была логическая ошибка. Спасибо всем за помощь.

...