У меня есть сущность 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!
Вопрос в том, почему это произошло?Как я могу получить карты, с которыми связана хотя бы одна транзакция?