首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归过程中的Spring异常

递归过程中的Spring异常
EN

Stack Overflow用户
提问于 2016-07-14 14:25:02
回答 1查看 58关注 0票数 0

我有以下列

代码语言:javascript
复制
ID username placementID sponsorID
4   G1             3       3
5   G2             4       4
6   G3             5       5
3   mzys        null    null

我正在尝试使用JPA来计算第三代mzys上有多少用户。

答案应该是一个,因为mzys > G1 > G2 > G3

但是当我使用

代码语言:javascript
复制
userRepository.countByPlacementPlacementPlacementUsername(placementPlacementPlacement.getUsername())

它给了我

代码语言:javascript
复制
java.util.NoSuchElementException
    at java.util.ArrayList$Itr.next(Unknown Source)
    at java.util.Collections$UnmodifiableCollection$1.next(Unknown Source)
    at org.springframework.data.jpa.repository.query.CriteriaQueryParameterBinder.bind(CriteriaQueryParameterBinder.java:63)

更新

User.java

代码语言:javascript
复制
@Entity
@Table(name = "USER")
public class User extends BasePersist<UserBO> {

    private static final long serialVersionUID = 1L;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "PLACEMENT_ID", referencedColumnName = "ID", nullable = true)
    private User placement;

    ...

现在,我正在尝试用

代码语言:javascript
复制
@Query(value="select count(u.id) from User u "
            + "left join u.placement u1 on u.placement.id = u1.placement.id "
            + "left join u.placement u2 on u1.placement.id = u2.placement.id "
            + "left join u.placement u3 on u2.placement.id = u3.placement.id "
            + "where u3.username =?1 and deletedflag =?2")
    int countByPlacementPlacementPlacementUsername(String username, boolean deletedFlag);

我得到了

代码语言:javascript
复制
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: with-clause referenced two different from-clause elements

知道为什么会这样吗?有没有更好的方法来达到我所需要的?

EN

回答 1

Stack Overflow用户

发布于 2016-07-15 09:08:10

主要问题是ON word。我把它去掉后,问题就解决了。

代码语言:javascript
复制
@Query(value="select count(u.id) from User u "
            + "left outer join u.placement u1 "
            + "left outer join u.placement u2 "
            + "left outer join u.placement u3 "
            + "where u3.username =?1 and u3.deletedFlag =?2")
    int countByPlacementPlacementPlacementUsername(String username, boolean deletedFlag);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38376837

复制
相关文章

相似问题

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