Hibernate: путь, ожидаемый для присоединения - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть сущность Transaction и сущность Card.С каждой картой может быть связано несколько транзакций, поэтому с точки зрения Transaction это отношение многие-к-одному.Это выглядит так.

Transaction.java

@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "CARD_ID")
private Card card;

Card.java

@OneToMany(mappedBy = "card", cascade = CascadeType.ALL, 
    orphanRemoval = true, 
    fetch = FetchType.LAZY)
private Set<Transaction> transactions = new HashSet<>();

Мне нужнонаписать запрос, который даст мне все карты, которые имеют по крайней мере одну связанную транзакцию.Я попытался сделать это следующим образом.

CardDAO.java

private List<Card> getByInstitutionIdWhereTransactionExists(
        JPAQuery q, long institutionId) {
    return q
            .from(card)
            .join(transaction)
            .where(
                    card.institution.id.eq(institutionId)
                    .and(transaction.card.eq(card)))
            .list(card);
}

Это, однако, приводит к следующей ошибке.

ERROR [org.hibernate.hql.internal.ast.ErrorCounter] (default task-2)  Path expected for join!

Вопрос в том, почему это произошло?Как я могу получить карты, с которыми связана хотя бы одна транзакция?

...