休眠:预期加入的路径

时间:2019-02-12 09:20:54

标签: java hibernate hql querydsl

我有一个实体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!

问题是,为什么会发生这种情况?如何获取至少具有关联交易的卡?

0 个答案:

没有答案