【发布时间】:2019-08-12 04:57:55
【问题描述】:
我想用 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 并进行原生查询?
【问题讨论】: