org.hibernate.QueryException: не удалось разрешить свойство: транзакции - 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<>();

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

public List<Card> getByInstitutionIdWhereTransactionExists(long institutionId) {
    final JPAQuery q = new JPAQuery(entityManager)
            .setHint(
                    "javax.persistence.loadgraph",
                    entityManager.getEntityGraph("card-with-transactions-entity-graph"));
    try {
        return getByInstitutionIdWhereTransactionExists(q, institutionId);
    } catch (NoResultException e) {/* Don't throw when no result. */}

    return Collections.emptyList();
}

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

Я попытался использовать его следующим образом:

final List<Card> cardsWithTransactions = cardDAO.getByInstitutionIdWhereTransactionExists(1L);

Однако это привело к исключению: org.hibernate.QueryException: не удалось разрешить свойство: транзакции

Моя схема базы данных выглядит следующим образом:

    <createTable tableName="transaction">
        <column name="id" type="bigint" />
        <column name="transaction_status" 
        <column name="card_id" type="bigint" />
    </createTable>

Итак, Транзакция имеет внешний ключ Card, а Card -не ссылаться на транзакции в моей схеме базы данных.Может ли это быть причиной ошибки?Как решить эту проблему?

...