gpt4 book ai didi

hibernate - jpql order by 子查询产生意外的 AST 节点异常

转载 作者:行者123 更新时间:2023-12-02 22:26:47 25 4
gpt4 key购买 nike

我将一个工作 (postgre)sql 查询转换为 jpql,但 hibernate 抛出了

org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node exception

这些是我的核心模型类:

@Entity
public class Piece {
@Id
@GeneratedValue
public Long id;

@ManyToOne
public AUser user;
public long index;
...
}

@Entity
public class Vote {
@Id
@GeneratedValue
public Long id;

@ManyToOne
public AUser receiver;
...
}

@Entity
public class AUser {
@Id
@GeneratedValue
public Long id;

@OneToMany(mappedBy="receiver", cascade=CascadeType.ALL)
public List<Vote> receivedVotes;
...
}

这是我的 jpql 查询:

String query = "select p from Piece p order by (select count(v.receiver) from Vote v where v.receiver.id=p.user.id) desc, p.index";

谁能解释一下这个异常,为什么会发生以及如何更改查询以避免它。谢谢!

最佳答案

JPQL 不支持 order by 中的子查询。如果我正确理解您的查询,您可以尝试如下操作:

select p 
from Piece p left join p.user.receivedVotes rv
group by p
order by count(rv) desc, p.index

关于hibernate - jpql order by 子查询产生意外的 AST 节点异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5551459/

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