首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在count函数中丢弃Spring数据JPA JPQL列名

在count函数中丢弃Spring数据JPA JPQL列名
EN

Stack Overflow用户
提问于 2018-10-11 06:41:35
回答 1查看 45关注 0票数 0

我有一个代码,通过使用选择一些记录。

我有两个实体:

代码语言:javascript
运行
复制
public class Cheat implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "cheat_seq", length = 10)
    private Long cheatSeq;

    @OneToMany(mappedBy = "cheat")
    private Set<CheatGoodVote> goodVote;

    // skipped..
}

public class CheatGoodVote {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="vote_seq", length=10)
    private Long voteSeq;

    @Column(name="ip_address", nullable=false)
    private String ipAddress;

    @Column(name="reg_date", nullable=false)
    private Date regDate;

    @ManyToOne(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
    @JoinColumn(name="cheat_fk", referencedColumnName="cheat_seq")
    public Cheat cheat;


}

我的存储库很简单:

代码语言:javascript
运行
复制
public interface CheatRepository extends JpaRepository<Cheat, Long>{

    @Query("SELECT c FROM Cheat c WHERE COUNT(c.goodVote) <= :voteCnt")
    Page<Cheat> findByVoteLessThan(@Param("voteCnt") Long voteCnt, Pageable page);
}

当我调用方法CheatRepository.findByVoteLessThan()时,它在SQL下面执行。

代码语言:javascript
运行
复制
select 
cheat0_.cheat_seq as cheat_se1_0_, cheat0_.answer as answer2_0_, cheat0_.question as question3_0_, cheat0_.reg_date as reg_date4_0_, cheat0_.writer_ip as writer_i5_0_ 
from cheat cheat0_ cross join cheat_good_vote goodvote1_ 
where cheat0_.cheat_seq=goodvote1_.cheat_fk and count(.)<=? 
order by cheat0_.reg_date desc limit ?

但是在这个SQL中,有奇怪的代码计数(.)<=?在WHERE条款。也许这就是抛出错误的原因。

面对这个问题的原因是什么?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-10-11 06:55:04

COUNT是不能在where子句中使用的聚合函数。相反,您可以使用SQL本机内部查询或having子句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52753816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档