2011-02-01 65 views
1

嗨, 我有两个双向关联的实体。为ManyToOne Association编写HQL查询

Project.java

class Project{ 

    int project_id; 

    @OneToMany(mappedBy="project") 
    private Set<Users> projectsUsers = new HashSet<Users>(); 

    //getters and setters and other fields 

} 

Users.java

class Users{ 

    int id; 
    int userId; 
    int project_id 

    @ManyToOne(fetch = FetchType.EAGER) 
    @JoinColumn(name="project_id") 
    private Project project; 

    //getters and setters and other fields 

} 

我想写一个HQL查询来检索与特定用户id相关的项目清单。

我正在写一些这样的东西没有奏效。

from Project P where P.projectsUsers.userId=1 

当试图执行此我得到一个异常“非法企图取消引用集合” 可以的,你请人帮我解决这个问题?

由于提前

与问候
Phani库马尔

+0

一),请使用HTML和/或'>`引号不要格式化你的代码。选择一个代码块并使用带花括号的图标b)JPA查询语言是JPQL,而不是HQL。你的问题中的一个标签是错误的,它是哪一个? – 2011-02-01 16:00:20

+0

其实我在Spring-MVC上工作的这部分代码。所以我认为我可能会为这个问题找到更好的解决方法。 – Patton 2011-02-02 05:56:35

回答

3

首先,是没有意义的,因为你有一个一对多“与特定用户id相关的项目列表中的” /多对一的关系,以便每个用户可以与不超过一个项目相关联。

查询检索项目如下:

SELECT u.project FROM users u WHERE u.userId = ?