我有一个实体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!
问题是,为什么会发生这种情况?如何获取至少具有关联交易的卡?