gpt4 book ai didi

java - 期待 IDENT,在第 1 行附近发现 '*'

转载 作者:行者123 更新时间:2023-12-02 01:35:55 26 4
gpt4 key购买 nike

我想用 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 并进行 native 查询?

最佳答案

t.* 替换为 t

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

此外,HQL 不是 SQL,它不支持 *

关于java - 期待 IDENT,在第 1 行附近发现 '*',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55278719/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com