期待IDENT,在第1行附近找到'*'[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我想用INNER JOIN实现JPA查询。我试过这个:

@Override
    public Optional<PaymentTransactions> paymentTransactionByWpfPaymentId(Integer id) {
        String hql = "SELECT t.* FROM " + PaymentTransactions.class.getName() + " t " 
                + " INNER JOIN " + WpfPaymentPaymentTransactions.class.getName() + " wppt "
                + " ON t.id = wppt.payment_transaction_id " 
                + " WHERE wppt.wpf_payment_id = :id "
                + " ORDER BY t.id ASC LIMIT 1";
        TypedQuery<PaymentTransactions> query = entityManager.createQuery(hql, PaymentTransactions.class).setParameter("id", id);
        List<PaymentTransactions> wpfPayments = query.getResultList();
        return wpfPayments.isEmpty() ? Optional.empty() : Optional.of(wpfPayments.get(0));
    }

但是当我运行代码时出现此错误:

Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: expecting IDENT, found '*' near line 1, column 10 [SELECT t.* FROM org.datalis.plugin.entity.PaymentTransactions t  INNER JOIN org.datalis.plugin.entity.WpfPaymentPaymentTransactions wppt  ON t.id = wppt.payment_transaction_id  WHERE wppt.wpf_payment_id = :id  ORDER BY t.id ASC LIMIT 1]

你知道我如何解决这个问题以及导致这个问题的原因吗?

可能我需要实现Spring Repository并进行本机查询?

java jpa jpa-2.0
1个回答
2
投票

t.*替换t

您希望返回PaymentTransactions对象,而不是其字段的值。

HQL也不是SQL,它不支持*

© www.soinside.com 2019 - 2024. All rights reserved.