【问题标题】:Hibernate - double left join休眠 - 双左连接
【发布时间】:2011-04-18 16:20:27
【问题描述】:

我有以下 3 个类,关系是 League 1-* Team 1-* Player 并且联赛和球队是通过league_team 表链接的

class League {

@NamedQueries( { @NamedQuery(name = "League.findJasperLeagueDetail", query = "from League r "
        + "where league_id = :Id") })
//getter setter methods
...

private Set<Team> team;

@OneToMany(cascade = CascadeType.ALL)
@JoinTable(name="league_team",joinColumns=@JoinColumn(name="team_id"),
inverseJoinColumns=@JoinColumn(name="league_id"))

public Set<Team> getTeams() {
    return team;
    }
}


class Team {
private Set<Player> players;

@OneToMany(mappedBy="teams")
public Set<Player> getPlayers(){
        return this.players;
    }
}

class Player{

private Team team;

@ManyToOne
@JoinColumn(name="team_id") 
public Team getTeam(){
        return this.team;
}
}   


public static void main (String[] ag){

// Get the entity manager em

        League league = em.find(League.class, 52L);
    Query query = em.createNamedQuery("League.findJasperLeagueDetail");
    query.setParameter("leagueId", league.getId());


    List<League> result = query.getResultList();
        Set teams = result.get(0).getReports();
        Iterator<Team> it = teams.iterator();
        if(it.hasNext()){
            Set<Player> players = it.next().getPlayers();

-> 在这里我得到以下异常:

java.util.NoSuchElementException
    at java.util.HashMap$HashIterator.nextEntry(Unknown Source)
    at java.util.HashMap$KeyIterator.next(Unknown Source)
    at org.hibernate.collection.AbstractPersistentCollection$IteratorProxy.next(AbstractPersistentCollection.java:577)

如何获得包含一组球队的联赛对象,其中每支球队都有一组球员?基本上,我如何获得双左连接?

【问题讨论】:

  • 您确定问题不在于您迭代结果的方式吗?看起来next() 是在没有事先检查hasNext() 的情况下调用的。

标签: hibernate hql left-join


【解决方案1】:

您似乎设置了错误的参数。

Query query = em.createNamedQuery("League.findJasperLeagueDetail");
//query.setParameter("leagueId", league.getId()); <--no named parameter 'leagueId'
query.setParameter("Id", league.getId());

干杯!

【讨论】:

    猜你喜欢
    • 2011-10-18
    • 1970-01-01
    • 2016-05-02
    • 2015-04-17
    • 2014-09-24
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多