2012-06-02 32 views
0

我有以下实体:JPA/Hibernate - 如何EAGERly获取EmbeddedId?

@Entity(name = "game_users") 
public class GameUser { 

    private GameUsersPK primaryKey; 

    @EmbeddedId 
    public GameUsersPK getPrimaryKey() { 
     return primaryKey; 
    } 
    ... 
} 

用下面的PK:

@Embeddable 
public class GameUsersPK implements Serializable { 
    @ManyToOne 
    private Game game; 

    @ManyToOne 
    private User user; 
    ... 
} 

当我通过执行查询的GameUser

GameUser gameUser = em.createQuery("from game_users", GameUser.class).setMaxResults(1).getSingleResult(); 

我注意到休眠正在执行两个查询 - 一个从game_users和一个从games left outer join users

我可以让Hibernate在一个查询中获取所有实体 - from game_users, games, users

谢谢。

回答

2
select gu from GameUser gu 
left join fetch gu.primaryKey.game 
left join fetch gu.primaryKey.user 

阅读Hibernate documentation about HQL and associations

+0

谢谢,但我知道我可以明确说出我的其他豆。我想避免它 - 我不能注释EAGER的地方,所以这将自动完成:-) – MosheElisha

+0

使用此查询 - 我看到选择查询所有三个表,但第二选择仍然执行 – MosheElisha

+0

这将有助于,如果我们有所有三个实体的映射,以及Hibernate执行并且你想避免的查询。 –